Selenium中locator和Webelement有什么区别?
在selenium的expected_conditions文档中,有些方法需要传入一个网页元素(webelement),而有些则需要传入一个定位器(locator)。这两者看起来很相似,但它们之间有什么区别呢?
3 个回答
1
定位器是用来识别网页元素的工具。你可以直接使用它,或者如果你已经创建了一个元素对象,也可以使用那个对象。
如果你直接传递元素对象(如果你有的话),WebDriver就不需要再创建一个新的对象了。如果你传递的是定位器,WebDriver会用它来创建一个元素对象。
PS:我对Python不是很熟悉。
1
正如其他回答者提到的,定位器是用来找到实际元素的工具。而网页元素则是找到的对象。那么在代码中这看起来是什么样的呢?
下面的代码会给你一个网页元素对象。
webelement = browser.find_element_by_id('id_here')
而如果你需要使用文档中描述的定位器,你需要这样做。这个例子来自于显式等待。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebdriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(ff, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
1
它们是不同的。
定位器只是一个抽象的方式,用来定义如何找到一个元素。
WebElement
只是指向那个元素在网页结构(DOM)中的引用。它是Selenium
用来向你展示网页元素的方式,这样你就可以对它进行操作。