Невозможно найти элемент, используя селен (Python) - PullRequest
0 голосов
/ 22 марта 2020

Я пытался найти кнопку, щелкнув по ней, но, что бы я ни пытался, она не смогла найти ее. Я пытался использовать все методы driver.find_element_by..., но, похоже, ничего не работает

from selenium import webdriver
import time


driver = webdriver.Chrome(executable_path="/Users/shreygupta/Documents/ComputerScience/PythonLanguage/Automation/corona/chromedriver")
driver.get("https://ourworldindata.org/coronavirus")
driver.maximize_window()
time.sleep(5)
driver.find_element_by_css_selector("a[data-track-note='chart-click-data']").click()

Я пытаюсь нажать вкладку ДАННЫЕ на снимке экрана ниже enter image description here

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Вы можете изменить скрипт для непосредственного открытия этого графика:

driver.get("https://ourworldindata.org/grapher/total-cases-covid-19")
driver.maximize_window()

Затем вы можете добавить implicitly_wait вместо sleep. Неявное ожидание говорит WebDriver опрашивать DOM в течение определенного периода времени при попытке найти какой-либо элемент (или элементы), недоступный сразу ( из python документация ). Он будет работать намного быстрее, потому что он будет взаимодействовать с элементом, как только он его найдет.

driver.implicitly_wait(5)
driver.find_element_by_css_selector("a[data-track-note='chart-click-data']").click()

Надеюсь, это поможет, удачи.

1 голос
/ 22 марта 2020

Вот логика c, которую вы можете использовать, где скрипт будет ждать максимум 30 для пункта меню Data, и если элемент присутствует в течение 30 секунд, он щелкает по элементу.

url = "https://ourworldindata.org/grapher/covid-confirmed-cases-since-100th-case"
driver.get(url)
driver.maximize_window()
wait = WebDriverWait(driver,30)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,"a[data-track-note='chart-click-data']"))).click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...