【问题标题】:Python Selenium warning "DeprecationWarning: find_element_by_* commands are deprecated" [duplicate]python selenium DeprecationWarning:不推荐使用 find_element_by_* 命令[重复]
【发布时间】:2022-01-22 17:15:29
【问题描述】:

我有多个具有相同类名(表号)的元素。我试图根据它们的顺序找到特定的,在这种情况下 [1],是出现在 DOM 中的第一个。

这是一个工作代码:

我的表 = driver.find_element_by_xpath("(//span[@class='table-number'])[1]").text

但是,我收到以下错误:

弃用警告:不推荐使用 find_element_by_* 命令。请用 find_element() 代替

我知道我可以忽略它,但这很烦人。我尝试了不同的语法,例如:

我的表 = driver.find_element(By.XPATH, ("(//span[@class='table-number'])[1]").text

我的表 = driver.find_element(By.XPATH, "(//span[@class='table-number'])[1]").text

什么应该是正确的语法?我是不是走错路了?

【问题讨论】:

    标签: python python-3.x selenium selenium-webdriver deprecation-warning


    【解决方案1】:

    正确的语法

    my_table = driver.find_element_by_xpath("(//span[@class='table-number'])[1]").text
    

    会有新的风格

    my_table = driver.find_element(By.XPATH, "(//span[@class='table-number'])[1]").text
    

    一般语法是:

    driver.find_element_by_xpath(xpath_locator_string)
    

    driver.find_element(By.XPATH, xpath_locator_string)
    

    【讨论】:

      【解决方案2】:

      升级你的 Python 版本无助于解决这个问题,因为 find_element 是 selenium 特定的函数。

      driver.find_element_by_* 已在 Selenium 4 较新版本中弃用。

      所以你应该使用

      driver.find_element(By.XPATH, "(//span[@class='table-number'])[1]").text
      

      您正在使用的第一个:

      my_table = driver.find_element(By.XPATH, ("(//span[@class='table-number'])[1]").text
      

      有多余的(

      第二个

      my_table = driver.find_element(By.XPATH, "(//span[@class='table-number'])[1]").text
      

      似乎是正确的。

      【讨论】:

      • my_table = driver.find_element(By.XPATH, "(//span[@class='table-number'])[1]").text
      猜你喜欢
      • 2021-12-20
      • 2019-01-07
      • 1970-01-01
      • 2021-06-18
      • 2018-10-23
      • 1970-01-01
      • 2012-11-14
      相关资源
      最近更新 更多