无法使用硒定位元素(Python)

时间:2020-03-21 23:47:05

标签: python selenium webdriverwait

我一直试图找到一个单击按钮的按钮,但是无论我尝试执行什么操作都无法找到它。我尝试使用所有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 个答案:

答案 0 :(得分:1)

这是您可以使用的逻辑,其中脚本将等待Data菜单项的最大值为30,如果该元素出现在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()

答案 1 :(得分:1)

您可以修改脚本以直接打开此图:

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

然后,您可以添加implicitly_wait而不是sleep。隐式等待告诉WebDriver在尝试查找任何不立即可用的元素(from python documentation)时在一定时间内轮询DOM。它会以更快的方式工作,因为它会在找到元素后立即与它进行交互。

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

希望这会有所帮助,祝你好运。