一尘不染

为什么要使用find_element(By ...)而不是find_element_by_

selenium

在selenium.webdriver.common.by中使用By代替常规的find_element_by _…方法的目的和好处是什么?例如:

driver.find_element_by_id('some_ID')

vs:

from selenium.webdriver.common.by import By
driver.find_element(By.ID, 'some_ID')

阅读 582

收藏
2020-06-26

共1个答案

一尘不染

documentatio
ñ find_element()似乎是一种“ 私人
所使用的”法find_element_by_...()的方法和还可以使用页面对象

因此,使用Page Object模式是您可能需要find_element()+ By而不是的原因find_element_by_...()

例如,您有一些包含元素id值的变量

link_id = "some_id"

然后用它来定位元素为

my_link = driver.find_element_by_id(link_id)

如果由于某种原因id属性从元素去掉,你既需要更新的选择和更换find_element_by_...()方法my_link

link_class_name = "some_class_name"
my_link = driver.find_element_by_class_name(link_class_name)

如果使用By,则您的初始定位符可能是

link_locator = (By.ID, "some_id")

然后将元素定位为

my_link = find_element(*link_locator)

在变化的情况下,HTML源你只需要您更新link_locator

link_locator = (By.CLASS_NAME, "some_class_name")

my_link保持完全相同

2020-06-26