diff options
| -rw-r--r-- | python/download_scotia.py | 132 |
1 files changed, 59 insertions, 73 deletions
diff --git a/python/download_scotia.py b/python/download_scotia.py index a25c445c..9b5f2af8 100644 --- a/python/download_scotia.py +++ b/python/download_scotia.py @@ -1,92 +1,78 @@ +import os +import time from selenium import webdriver from selenium.webdriver.common.by import By -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.firefox.options import Options -import time - -import os +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.ui import WebDriverWait from serenitas.utils.env import DAILY_DIR -# # create Firefox options object -# options = Options() -# # set headless mode -# options.add_argument("--headless") - - -def wait(): +def wait(driver): WebDriverWait(driver, 10).until( lambda driver: driver.execute_script("return document.readyState") == "complete" ) -report_dir = "/home/serenitas/Daily/Selene/Scotia_reports" -options = Options() -options.add_argument("--headless") -fp = webdriver.FirefoxProfile() -fp.set_preference("browser.download.folderList", 2) -fp.set_preference("browser.download.dir", report_dir) -fp.set_preference("browser.download.useDownloadDir", True) -fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream") -fp.set_preference("browser.download.manager.showWhenStarting", False) -fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream") -fp.set_preference("browser.download.manager.useWindow", False) -fp.set_preference("browser.download.manager.focusWhenStarting", False) -fp.set_preference("browser.download.manager.alertOnEXEOpen", False) -fp.set_preference("browser.download.manager.closeWhenDone", True) -fp.set_preference("browser.download.manager.showAlertOnComplete", False) -fp.set_preference("browser.download.manager.scanWhenDone", False) -fp.set_preference("browser.download.manager.skipSchedule", True) -driver = webdriver.Firefox(firefox_profile=fp, options=options) - -# navigate to Google.com -driver.get("https://web1.mail.scotiabank.com/webmail/do/Home") - -wait() - -# locate the username element -username_element = driver.find_element_by_id("username") - -# set the value of the username element -username_element.send_keys("selene-ops@lmcg.com") - -# locate the password element -password_element = driver.find_element_by_id("passwordid") - -# set the value of the password element -password_element.send_keys("oeujG*UF!53o") - - -# locate the login button element -login_button = driver.find_element_by_id("loginbutton") - -# click the login button -login_button.click() +def download_report(account_username, password, report_dir): + driver = create_driver() + driver.get("https://web1.mail.scotiabank.com/webmail/do/Home") + wait(driver) + username_element = driver.find_element_by_id("username") + username_element.send_keys(account_username) + password_element = driver.find_element_by_id("passwordid") + password_element.send_keys(password) + login_button = driver.find_element_by_id("loginbutton") + login_button.click() + wait(driver) + time.sleep(1) + login_button = driver.find_element_by_id("leftNavFolderLink") + login_button.click() + time.sleep(1) + login_button = driver.find_element_by_id("leftNavInboxFolderLink") + login_button.click() + time.sleep(1) + elements = driver.find_elements_by_class_name("zfolder-msg-clickable")[0] + elements.click() + time.sleep(1) + elements = driver.find_elements_by_class_name("zmessage-attachment-link")[0] + fname = elements.text.split()[0] + # check if the file exists in the directory + if not os.path.exists(os.path.join(report_dir, fname)): + elements.click() + else: + print(f"{fname} exists already in {report_dir}") + driver.quit() -wait() -time.sleep(1) -login_button = driver.find_element_by_id("leftNavFolderLink") -login_button.click() -time.sleep(1) +def create_driver(): + options = Options() + options.add_argument("--headless") + fp = webdriver.FirefoxProfile() + fp.set_preference("browser.download.folderList", 2) + fp.set_preference("browser.download.useDownloadDir", True) + fp.set_preference( + "browser.helperApps.neverAsk.saveToDisk", "application/octet-stream" + ) + fp.set_preference("browser.download.manager.showWhenStarting", False) + fp.set_preference("browser.download.manager.useWindow", False) + fp.set_preference("browser.download.manager.focusWhenStarting", False) + fp.set_preference("browser.download.manager.alertOnEXEOpen", False) + fp.set_preference("browser.download.manager.closeWhenDone", True) + fp.set_preference("browser.download.manager.showAlertOnComplete", False) + fp.set_preference("browser.download.manager.scanWhenDone", False) + fp.set_preference("browser.download.manager.skipSchedule", True) + return webdriver.Firefox(firefox_profile=fp, options=options) -login_button = driver.find_element_by_id("leftNavInboxFolderLink") -login_button.click() -time.sleep(1) +def main(): -elements = driver.find_elements_by_class_name("zfolder-msg-clickable")[0] -elements.click() + scotia_login = {"selene-ops@lmcg.com": "oeujG*UF!53o"} + for username, password in scotia_login.items(): + REPORT_DIR = DAILY_DIR / "Selene" / "Scotia_reports" + download_report(username, password, REPORT_DIR) -time.sleep(1) -elements = driver.find_elements_by_class_name("zmessage-attachment-link")[0] -REPORT_DIR = DAILY_DIR / "Selene" / "Scotia_reports" -fname = elements.text.split()[0] -# check if the file exists in the directory -if not os.path.exists(os.path.join(report_dir, fname)): - elements.click() -else: - print(f"{fname} exists already {report_dir}") +if __name__ == "__main__": + main() |
