我目前正在尝试验证DOM中不存在该元素:
我写过这个函数:
def verifyElementNotFound(self, xpath):
element = self.driver.find_element_by_xpath(xpath)
if element.is_displayed():
raise Exception("Element should not be found")
else:
pass
该元素在dom中不存在,但它给了我这个错误:
raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//td[.="DO NOT DELETE: Regression Test script 2"]"}
或者我可以使用这个intead,这是一种强有力的方法吗?
try:
element = self.driver.find_element_by_xpath(xpath)
if element.is_displayed():
raise Exception("Element should not be found")
except:
pass
答案 0 :(得分:3)
尝试这不确定这是否是你想要的。
element = driver.find_elements_by_xpath(xpath)
if len(element):
print("element is present")
elif:
print("element is not present")
请告诉我这是否适合您。
答案 1 :(得分:2)
由于DOM上没有元素,行
element = self.driver.find_element_by_xpath(xpath)
会抛出NoSuchElementException
,因为WebDriver
甚至找不到元素。在try-catch块中使用此行也可以正常工作(如第二个代码),或者您也可以使用@ Kliffy使用find_elements_by_xpath
的方法,它会自动处理任何异常&如果未找到element,则返回空列表,否则返回列表中的所有匹配元素。所以你要做的就是检查find_elements_by_xpath
返回的列表长度是否等于0来断言元素不存在。
答案 2 :(得分:0)
如果您要检查元素是否不存在,最简单的方法是使用with语句。
from selenium.common.exceptions import NoSuchElementException
def test_element_does_not_exist(self):
with self.assertRaises(NoSuchElementException):
browser.find_element_by_xpath(xpath)