📅  最后修改于: 2023-12-03 15:25:33.639000             🧑  作者: Mango
在过去,我们经常使用 Selenium WebDriver 中的 find_element_by_*
命令来查找页面元素。例如,find_element_by_id()
,find_element_by_name()
,find_element_by_xpath()
等等。
然而,Selenium 官方已经弃用了这些方法,并建议开发者改写代码来使用更加稳定的 find_element()
方法。
主要是因为这些方法不够稳定。我们都知道,页面上的元素可能会因为不同的原因而发生变化,例如 HTML 结构的更新、CSS 样式的更改、元素的添加或删除等等。而使用 find_element_by_*
命令定位元素时,很容易受到这些变化的影响。
相比之下,使用 find_element()
方法可以更好地处理这些变化。它支持多种定位方式,例如 ID、class、name、tag name、link text、partial link text、CSS selector、XPath 等等。我们可以根据实际情况选择不同的定位方式,从而提高代码的稳定性和健壮性。
下面是一个例子,展示了如何将原来的 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_*
命令。