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")
def main():
    obp_logger.info("Start main")
    check_for_clean_folder()
    get_csv_with_selenium(TMP)
    obp_logger.info("Done main")