Art*_*hur 8 python selenium selenium-webdriver
使用来自 selenium.webdriver.common.by 的 By 而不是普通的 find_element_by_... 方法的目的和好处是什么?例如:
driver.find_element_by_id('some_ID')
Run Code Online (Sandbox Code Playgroud)
对比:
from selenium.webdriver.common.by import By
driver.find_element(By.ID, 'some_ID')
Run Code Online (Sandbox Code Playgroud)
And*_*son 10
据documentatio ñfind_element()似乎是一种“私人所使用的”法find_element_by_...()的方法和还可以使用页面对象
因此,使用页面对象模式是您可能需要find_element()+By而不是find_element_by_...().
例如,您有一些包含元素id值的变量
link_id = "some_id"
Run Code Online (Sandbox Code Playgroud)
你用它来定位元素
my_link = driver.find_element_by_id(link_id)
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因id从元素中删除了属性,则需要同时更新选择器和替换find_element_by_...()方法my_link作为
link_class_name = "some_class_name"
my_link = driver.find_element_by_class_name(link_class_name)
Run Code Online (Sandbox Code Playgroud)
如果您使用By,那么您的初始定位器可能是
link_locator = (By.ID, "some_id")
Run Code Online (Sandbox Code Playgroud)
并且您将元素定位为
my_link = find_element(*link_locator)
Run Code Online (Sandbox Code Playgroud)
如果HTML源发生变化,您只需要更新您的link_locatoras
link_locator = (By.CLASS_NAME, "some_class_name")
Run Code Online (Sandbox Code Playgroud)
并且my_link保持完全一样
| 归档时间: |
|
| 查看次数: |
8976 次 |
| 最近记录: |