selenium python验证元素不存在

时间:2017-04-20 19:25:37

标签: python selenium

我目前正在尝试验证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

3 个答案:

答案 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)