diff options
Diffstat (limited to 'downloader.py')
-rw-r--r-- | downloader.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/downloader.py b/downloader.py new file mode 100644 index 0000000..8b74611 --- /dev/null +++ b/downloader.py @@ -0,0 +1,58 @@ +""" +Ini nanti periodik +""" +import os +import time + +from dotenv import load_dotenv +from selenium import webdriver +from selenium.webdriver import ActionChains +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.wait import WebDriverWait + +load_dotenv() + + +def driverSetup(url): + op = webdriver.ChromeOptions() + op.add_experimental_option('prefs', { + 'download.default_directory': os.getenv('DOWNLOAD_PATH') + }) + op.add_argument('--headless') + op.add_argument("--no-sandbox") + op.add_argument("--disable-dev-shm-usage") + driver = webdriver.Chrome(options=op) + driver.get(url) + return driver + + +def downloadCsv(): + driver = driverSetup(os.getenv('URL')) + action = ActionChains(driver) + + try: + reportArea = WebDriverWait(driver, 10).until( + EC.visibility_of_element_located((os.getenv('REPORT_AREA_SELECTOR_TYPE'), os.getenv('REPORT_AREA'))) + ) + action.move_to_element(reportArea).perform() + action.context_click(reportArea).perform() + + exportButton = WebDriverWait(driver, 10).until( + EC.element_to_be_clickable((os.getenv('EXPORT_BUTTON_SELECTOR_TYPE'), os.getenv('EXPORT_BUTTON'))) + ) + exportButton.click() + + downloadButton = WebDriverWait(driver, 10).until( + EC.element_to_be_clickable( + (os.getenv('DOWNLOAD_BUTTON_SELECTOR_TYPE'), os.getenv('DOWNLOAD_BUTTON'))) + ) + downloadButton.click() + + time.sleep(5) + + finally: + driver.quit() + + +if __name__ == '__main__': + downloadCsv() |