From adc0b8c9781472f5ac0d99884be98348912b5f10 Mon Sep 17 00:00:00 2001 From: Nico Ismaili Date: Wed, 4 Oct 2023 20:00:55 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Added=20chrome=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/trello_scraper.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/trello_scraper.py b/src/trello_scraper.py index 7442e83..d2a69fb 100644 --- a/src/trello_scraper.py +++ b/src/trello_scraper.py @@ -5,6 +5,8 @@ from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait +from util.models import Browser + def get_board_json(driver, config): @@ -20,35 +22,40 @@ def get_board_json(driver, config): log_in_btn.click() # email field - email_txt_field = driver.find_element(By.ID, "username") - wait.until(lambda _: email_txt_field.is_displayed()) + email_txt_field = wait.until( + EC.presence_of_element_located((By.ID, "username"))) email_txt_field.send_keys(config.email) # continue button - continue_btn = driver.find_element(By.ID, "login-submit") - wait.until(lambda _: continue_btn.is_displayed()) + continue_btn = wait.until( + EC.presence_of_element_located((By.ID, "login-submit"))) continue_btn.click() + + driver.implicitly_wait(5) # wait for password field and login - pw_txt_field = driver.find_element(By.ID, "password") - wait.until(lambda _: pw_txt_field.is_displayed()) + pw_txt_field = wait.until( + EC.presence_of_element_located((By.ID, "password"))) pw_txt_field.send_keys(config.password, Keys.ENTER) driver.implicitly_wait(5) # wait for boards to load - content_div = driver.find_element(By.ID, "content") + content_div = wait.until( + EC.presence_of_element_located((By.ID, "content"))) wait.until(lambda _: content_div.is_displayed()) driver.get(config.board_url + ".json") - raw_data_btn = wait.until( - EC.presence_of_element_located((By.ID, "rawdata-tab"))) - raw_data_btn.click() + if(config.browser == Browser.FIREFOX.value): + raw_data_btn = wait.until( + EC.presence_of_element_located((By.ID, "rawdata-tab"))) + raw_data_btn.click() + raw_data_pre = wait.until( - EC.presence_of_element_located((By.CSS_SELECTOR, 'pre.data'))) + EC.presence_of_element_located((By.TAG_NAME, "pre"))) raw_json = raw_data_pre.text - + board_json = json.loads(raw_json) driver.quit()