如何比较两个硒WebElement以查看它们是否相同?
首先,我检索input_fields
和的列表first_input
:
self.input_fields = driver.find_elements(By.CLASS_NAME, class_name)
self.first_input = driver.find_element(By.ID, id)
然后,我尝试检查input_fields[0]
和first_input
是否为相同的WebElement。
if self.first_input is not self.input_fields[0]:
self.__log.warning("WebElement first_input : {} != {}".format(self.first_input, self.input_fields[0]))
尽管session
和element
相同,但无论如何都会触发警告消息。
WARNING - WebElement first_input: <selenium.webdriver.remote.webelement.WebElement (session="796bf0bcf3e0df528ee932d477951689", element="94a2ee62-9511-45e5-8aa3-bd3d3e9be309")> != <selenium.webdriver.remote.webelement.WebElement (session="796bf0bcf3e0df528ee932d477951689", element="94a2ee62-9511-45e5-8aa3-bd3d3e9be309")>
编辑:使用!=
代替is not
将解决所有问题:
if self.first_input != self.input_fields[0]:
if self.first_input.id == self.input_fields[0].id:
self.__log.info("Same element {} , {}".format(self.first_input.id, self.input_fields[0].id))
阅读文档后,我发现了id属性,其定义用作private属性的获取器_id
@property
def id(self):
"""Internal ID used by selenium.
This is mainly for internal use. Simple use cases such as checking if 2
webelements refer to the same element, can be done using ``==``::
if element1 == element2:
print("These 2 are equal")
"""
return self._id
class WebElement(object):
def __init__(self, parent, id_, w3c=False):
self._parent = parent
self._id = id_
self._w3c = w3c
注意:
print("{}".format(self.first_input.id))
给我们提供与我们在对象中看到的元素ID相同的元素ID。
94a2ee62-9511-45e5-8aa3-bd3d3e9be309
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句