【问题标题】:Unable to locate element using selenium (Python)无法使用硒(Python)定位元素
【发布时间】:2020-03-22 11:39:41
【问题描述】:

我一直试图找到一个单击它的按钮,但无论我尝试什么,它都无法找到它。我已尝试使用所有 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()

我正在尝试单击下面屏幕截图中的数据选项卡

【问题讨论】:

    标签: python selenium webdriverwait


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      这是您可以使用的逻辑,其中脚本将为 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()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-23
        • 2019-09-30
        • 1970-01-01
        • 2021-05-31
        • 1970-01-01
        • 2019-12-01
        • 1970-01-01
        相关资源
        最近更新 更多