python selenium DeprecationWarning:find_element_by_* 命令已弃用

python selenium DeprecationWarning: find_element_by_* commands are deprecated

我有多个具有相同 class_name(table-编号)的元素。我试图根据它们的顺序找到特定的,在本例中为 [1],第一个出现在 DOM.

中的

这是一个工作代码:

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

但是,我收到以下错误:

DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead

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

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

有了新的风格就会

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)

升级 你的 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

似乎是正确的。