diff options
Diffstat (limited to 'python/report_ops/scotia.py')
| -rw-r--r-- | python/report_ops/scotia.py | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/python/report_ops/scotia.py b/python/report_ops/scotia.py index 5543aced..fccb45a7 100644 --- a/python/report_ops/scotia.py +++ b/python/report_ops/scotia.py @@ -1,7 +1,10 @@ import time +import re from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.common.by import By import logging import datetime @@ -17,10 +20,10 @@ def wait(driver): ) -def download_report(account_username, password, report_dir): +def download_report(account_username, password, report_dir, workdate): driver = create_driver(report_dir) login(driver, account_username, password) - navigate_to_inbox(driver) + navigate_to_inbox(driver, workdate) attachment_element = get_attachment_element(driver) attachment_element.click() fname = attachment_element.text.split()[0] @@ -40,21 +43,30 @@ def login(driver, account_username, password): wait(driver) -def navigate_to_inbox(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") +def navigate_to_inbox(driver, workdate): + wait = WebDriverWait(driver, 10) + login_button = wait.until( + EC.presence_of_element_located((By.ID, "leftNavFolderLink")) + ) login_button.click() - time.sleep(1) - elements = driver.find_elements_by_class_name("zfolder-msg-clickable")[0] - elements.click() - time.sleep(1) + wait.until(EC.presence_of_element_located((By.CLASS_NAME, "zfolder-msg"))) + for msg in driver.find_elements_by_class_name("zfolder-msg"): + date_string = re.search( + r"\d{4}-\d{2}-\d{2}|\d{1,2}/\d{1,2}/\d{4}", msg.text + ).group() + date = datetime.datetime.strptime(date_string, "%Y-%m-%d").date() + if date == workdate: + msg.click() + return + raise ValueError(f"Could not find a file for this date {workdate}") def get_attachment_element(driver): - return driver.find_elements_by_class_name("zmessage-attachment-link")[0] + wait = WebDriverWait(driver, 10) + attach = wait.until( + EC.presence_of_element_located((By.CLASS_NAME, "zmessage-attachment-link")) + ) + return attach def create_driver(download_dir): @@ -69,17 +81,17 @@ def create_driver(download_dir): return webdriver.Firefox(firefox_profile=fp, options=options) -def download_scotia_report(date): +def download_scotia_report(workdate): scotia_login = {"selene-ops@lmcg.com": "oeujG*UF!53o"} for username, password in scotia_login.items(): REPORT_DIR = DAILY_DIR / "Selene" / "Scotia_reports" try: fname = next( REPORT_DIR.glob( - f"IsoSelene_{prev_business_day(date):%d-%b-%Y}_*_xlsx.JOAAPKO3.JOAAPKO1" + f"IsoSelene_{prev_business_day(workdate):%d-%b-%Y}_*_xlsx.JOAAPKO3.JOAAPKO1" ) ) logger.info(f"{fname} already exists in {REPORT_DIR}") except StopIteration: # File doesn't exist, let's get it" - fname = download_report(username, password, REPORT_DIR) - logger.info(f"Downloaded Scotia Report for {date}: {fname}") + fname = download_report(username, password, REPORT_DIR, workdate) + logger.info(f"Downloaded Scotia Report for {workdate}: {fname}") |
