diff options
| -rw-r--r-- | harvester_submit_week_for_approval.py | 54 |
1 files changed, 51 insertions, 3 deletions
diff --git a/harvester_submit_week_for_approval.py b/harvester_submit_week_for_approval.py index 586cc4f..809979b 100644 --- a/harvester_submit_week_for_approval.py +++ b/harvester_submit_week_for_approval.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from datetime import datetime, timedelta + from selenium.webdriver import Firefox from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys @@ -11,9 +13,8 @@ email = '' password = '' subdomain = '' -def login(driver): - wait = WebDriverWait(driver, timeout=10) +def login(driver, wait): driver.get('https://id.getharvest.com/harvest/sign_in') wait.until( @@ -27,6 +28,50 @@ def login(driver): return driver +def most_recent_friday(): + friday = 4 + now = datetime.now() + + if now.weekday() >= friday: + return now - timedelta(days=now.weekday() - friday) + else: + return now - timedelta(weeks=1) + timedelta(days=friday - now.weekday()) + +def submit_week_for_approval(driver, wait): + # friday = most_recent_friday() + friday = datetime(2018, 1, 15) + + url = 'https://{subdomain}.harvestapp.com/time/week/{year}/{month}/{day}/'.format( + subdomain=subdomain, + year=friday.year, + month=friday.month, + day=friday.day) + + driver.get(url) + + # Wait for page to load + wait.until(expected.text_to_be_present_in_element( + (By.ID, 'days-in-week-data-island'), + friday.strftime('%F'))) + + # Click "Submit Week for Approval" button + driver.find_element_by_css_selector( + '.approval-button .submit-link' + ).click() + + # Click "Yes, Submit Timesheet" button + wait.until( + expected.visibility_of_element_located( + ( + By.CSS_SELECTOR, + '.approval-confirmation .js-submit-for-approval', + ))) + + # Wait for success message + wait.until(expected.text_to_be_present_in_element( + (By.ID, 'status_message'), + 'Timesheet has been submitted for approval.')) + if __name__ == "__main__": options = Options() # options.add_argument('-headless') @@ -35,7 +80,10 @@ if __name__ == "__main__": firefox_binary='/Applications/FirefoxDeveloperEdition.app/Contents/MacOS/firefox-bin', firefox_options=options) - driver = login(driver) + wait = WebDriverWait(driver, timeout=10) + + driver = login(driver, wait) + driver = submit_week_for_approval(driver, wait) print(driver.page_source) |
