""" Ini nanti periodik """ import os import time from dotenv import load_dotenv from selenium import webdriver from selenium.common import TimeoutException from selenium.webdriver import ActionChains from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from util import setupLogger load_dotenv() logger = setupLogger() 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) logger.info("REPORT FILE DOWNLOADED") except TimeoutException: logger.error("Timed out while downloading report") finally: driver.quit() if __name__ == '__main__': downloadCsv()