📌  相关文章
📜  弃用警告:不推荐使用 find_element_by_* 命令.请使用 find_element() (1)

📅  最后修改于: 2023-12-03 15:25:33.639000             🧑  作者: Mango

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

在过去,我们经常使用 Selenium WebDriver 中的 find_element_by_* 命令来查找页面元素。例如,find_element_by_id()find_element_by_name()find_element_by_xpath()等等。

然而,Selenium 官方已经弃用了这些方法,并建议开发者改写代码来使用更加稳定的 find_element() 方法。

为什么要弃用 find_element_by_* 命令?

主要是因为这些方法不够稳定。我们都知道,页面上的元素可能会因为不同的原因而发生变化,例如 HTML 结构的更新、CSS 样式的更改、元素的添加或删除等等。而使用 find_element_by_* 命令定位元素时,很容易受到这些变化的影响。

相比之下,使用 find_element() 方法可以更好地处理这些变化。它支持多种定位方式,例如 ID、class、name、tag name、link text、partial link text、CSS selector、XPath 等等。我们可以根据实际情况选择不同的定位方式,从而提高代码的稳定性和健壮性。

如何改写代码来使用 find_element()?

下面是一个例子,展示了如何将原来的 find_element_by_xpath() 语句改写为 find_element() 语句:

# 原来的代码
element = driver.find_element_by_xpath("//input[@id='username']")

# 改写后的代码
element = driver.find_element(By.XPATH, "//input[@id='username']")

可以看到,我们需要引入 Selenium 的 By 类,并将定位方式和表达式传递给 find_element() 方法。同样的,对于其他的定位方式,只需要调整参数即可。

总结

尽管 find_element_by_* 命令在过去极其常用,但是现在已经不再被推荐使用,因为它们不够稳定。相比之下,find_element() 方法能够更好地处理变化,从而提高代码的稳定性。因此,我们应该尽快改写代码,避免使用 find_element_by_* 命令。