def get_csv_with_selenium(path_to_save_csv, username, password): """Getting CSV file via Firefox, controlled by Selenium webdriver""" # TODO: When no username and password is set, use the demo login. # Clean up the OBP temp folder (delete all csv files there). # LINK: http://seleniumhq.org/docs/03_webdriver.html#getting-started-with-selenium-webdriver obp_logger.info("Setting csv_folder...") # Check for existing and empty tmp check_for_clean_folder(path_to_save_csv) csv_save_path = os.path.join(os.getcwd(), path_to_save_csv, TMP_CSV_SUFFIX) obp_logger.debug("csv_folder is: %s" % csv_save_path) check_for_clean_folder(csv_save_path) obp_logger.info("Start Selenium") obp_logger.debug("csv_save_path: %s" % csv_save_path) obp_logger.debug("username is set") obp_logger.debug("password is set") # Setting up a Profile for Firefox. # Proxy is disabled and download files without asking. obp_logger.info("Setup Firefox Profile") fp = webdriver.FirefoxProfile() obp_logger.debug("webdriver firefox") fp.set_preference("network.proxy.type", 0) obp_logger.debug("network.proxy.type 0") fp.set_preference("browser.download.folderList", 2) obp_logger.debug("rowser.download.fold 2") fp.set_preference("browser.download.manager.showWhenStarting", False) obp_logger.debug("rowser.download.manager.showWhenStarting False ") fp.set_preference("browser.download.dir", csv_save_path) obp_logger.debug("browser.download.dir %s" % csv_save_path) # Need to set CSV to saveToDisk, else it's unknown to FF and it will ask for it fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv") obp_logger.debug("browser.helperApps.neverAsk.saveToDisk text/csv") obp_logger.info("Start Firefox") browser = webdriver.Firefox(firefox_profile=fp) # Get local session of firefox obp_logger.debug("Open URL: %s" % postbank_main_url_login_page) browser.get(postbank_main_url_login_page) # Load page assert "Postbank Online-Banking" in browser.title #selenium.set_browser_log_level("error") # Here we will insert the username and password: # find the element that's name attribute is nutzername and kennwort obp_logger.info("Inserting Username and Password to Login") obp_logger.debug("searching for login box") inputElement_username = browser.find_element_by_name("nutzername") obp_logger.debug("searching for password box") inputElement_password = browser.find_element_by_name("kennwort") # send Username and Password obp_logger.debug("Inserting username into login box: %s " % username) inputElement_username.send_keys(username) obp_logger.debug("Inserting password into login box") inputElement_password.send_keys(password) # submit the Username and Password to Postbank. obp_logger.info("submitting login_data to login") inputElement_password.submit() # This opens the main page for accounts, and checks the name. # Call the Transaction Page obp_logger.debug("Open URL: %s" % postbank_main_url_value_page) browser.get(postbank_main_url_value_page) assert "Postbank Online-Banking" in browser.title # Call the CSV Link. # Warning! # The Postbank uses a :page counter, and when the URL doesn't have the right page counter it will return # an error message. obp_logger.debug("Open URL: %s" % postbank_main_url_value_download) result = browser.get(postbank_main_url_value_download) obp_logger.info("closing Firefox") browser.close() return csv_save_path
def get_csv_with_selenium(path_to_save_csv, username, password): """Getting CSV file via Firefox, controlled by Selenium webdriver""" # TODO: When no username and password is set, use the demo login. # Clean up the OBP temp folder (delete all csv files there). # LINK: http://seleniumhq.org/docs/03_webdriver.html#getting-started-with-selenium-webdriver obp_logger.info("Setting csv_folder...") # Check for existing and empty tmp check_for_clean_folder(path_to_save_csv) csv_save_path = os.path.join(os.getcwd(), path_to_save_csv, TMP_CSV_SUFFIX) obp_logger.debug("csv_folder is: %s" % csv_save_path) check_for_clean_folder(csv_save_path) obp_logger.info("Start Selenium") obp_logger.debug("csv_save_path: %s" % csv_save_path) obp_logger.debug("username is set") obp_logger.debug("password is set") # Setting up a Profile for Firefox. # Proxy is disabled and download files without asking. obp_logger.info("Setup Firefox Profile") fp = webdriver.FirefoxProfile() obp_logger.debug("webdriver firefox") fp.set_preference("network.proxy.type", 0) obp_logger.debug("network.proxy.type 0") fp.set_preference("browser.download.folderList", 2) obp_logger.debug("rowser.download.fold 2") fp.set_preference("browser.download.manager.showWhenStarting", False) obp_logger.debug("rowser.download.manager.showWhenStarting False ") fp.set_preference("browser.download.dir", csv_save_path) obp_logger.debug("browser.download.dir %s" % csv_save_path) # Need to set CSV to saveToDisk, else it's unknown to FF and it will ask for it fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv") obp_logger.debug("browser.helperApps.neverAsk.saveToDisk text/csv") obp_logger.info("Start Firefox") browser = webdriver.Firefox( firefox_profile=fp) # Get local session of firefox obp_logger.debug("Open URL: %s" % postbank_main_url_login_page) browser.get(postbank_main_url_login_page) # Load page assert "Postbank Online-Banking" in browser.title #selenium.set_browser_log_level("error") # Here we will insert the username and password: # find the element that's name attribute is nutzername and kennwort obp_logger.info("Inserting Username and Password to Login") obp_logger.debug("searching for login box") inputElement_username = browser.find_element_by_name("nutzername") obp_logger.debug("searching for password box") inputElement_password = browser.find_element_by_name("kennwort") # send Username and Password obp_logger.debug("Inserting username into login box: %s " % username) inputElement_username.send_keys(username) obp_logger.debug("Inserting password into login box") inputElement_password.send_keys(password) # submit the Username and Password to Postbank. obp_logger.info("submitting login_data to login") inputElement_password.submit() # This opens the main page for accounts, and checks the name. # Call the Transaction Page obp_logger.debug("Open URL: %s" % postbank_main_url_value_page) browser.get(postbank_main_url_value_page) assert "Postbank Online-Banking" in browser.title # Call the CSV Link. # Warning! # The Postbank uses a :page counter, and when the URL doesn't have the right page counter it will return # an error message. obp_logger.debug("Open URL: %s" % postbank_main_url_value_download) result = browser.get(postbank_main_url_value_download) obp_logger.info("closing Firefox") browser.close() return csv_save_path
def main(): obp_logger.info("Start main") check_for_clean_folder() get_csv_with_selenium(TMP) obp_logger.info("Done main")