【问题标题】:Unable to find element by xpath using selenium无法使用 selenium 通过 xpath 找到元素
【发布时间】:2022-08-16 21:56:27
【问题描述】:

我对 Python 非常陌生,我正在尝试观看有关使用 Selenium 进行网络抓取的视频。在video 中,介绍如何执行此操作的人有一大堆不同的可能方法来在网页上查找元素。他正在尝试使用 xpath 识别页面上的按钮。

但是,当我尝试这样做时,我只有两个选择(如下所示)。尝试仅使用相同的代码通过它的 xpath 查找元素根本行不通。我收到一条错误消息

AttributeError: \'WebDriver\' 对象没有属性 \'find_elements_by_xpath\'

我在这里做错了什么?我需要做些什么才能访问这些吗?

    标签: python selenium


    【解决方案1】:

    如果您最近下载了 Selenium(我的意思是,不是一年前左右),那么您使用的是最新版本的 Selenium(Selenium 4),并且 Selenium 4 发生了变化,您使用 By 类进入定位器策略。

    from selenium.webdriver.common.by import By
    
    driver.find_element(By.ID, "element path")
    driver.find_element(By.XPATH, "element path")
    driver.find_element(By.CSS_SELECTOR, "element path")
    driver.find_element(By.CLASS_NAME, "element path")
    

    等等

    find_elements 也是如此

    driver.find_elements(By.ID, "element path")
    driver.find_elements(By.XPATH, "element path")
    driver.find_elements(By.CSS_SELECTOR, "element path")
    driver.find_elements(By.CLASS_NAME, "element path")
    

    这里的关键是导入By 类并使用它。

    find_element_by_xpathfind_elements_by_xpath 等在 Selenium 4 中已弃用。

    【讨论】:

      【解决方案2】:

      在最新的 Selenium 版本中,driver.find_element_by_xpath 方法由driver.find_elements(By.XPATH, 更改。
      所以,而不是像这样的旧语法

      driver.find_element_by_xpath("//*[@id='Username']")
      

      现在你应该使用新的语法,比如

      driver.find_element(By.XPATH, "//*[@id='Username']")
      

      所有其他旧的find_element_by_*find_elements_by_* 方法都是一样的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-12
        • 2011-11-24
        相关资源
        最近更新 更多