如何在XPath中选择空元素?

时间:2014-05-21 09:41:20

标签: selenium xpath

我们选择使用Django 1.4测试的元素和像这样的Selenium:

self.assertEqual(1, len(self.selenium.find_elements_by_xpath("//a[@href='#'][@class='button save-as'][@title='Save As...'][text()='Save As']")))

(该类继承自LiveServerTestCase)。

问题在于有时会有没有文本的元素,如果我们选择[text()='']则会失败(len为0)。如何选择没有文字的元素?

更新:由于[text()='']无法正常工作,我必须断言两行以断言没有文字:

self.assertEqual(1, len(self.selenium.find_elements_by_xpath("//a[@href='#'][@class='button properties'][@title='Properties']")))
self.assertEqual("", self.selenium.find_element_by_xpath("//a[@href='#'][@class='button properties'][@title='Properties']").text)

现在我可以用一行断言:

self.assertEqual(1, len(self.selenium.find_elements_by_xpath("//a[@href='#'][@class='button properties'][@title='Properties'][not(text())]")))

1 个答案:

答案 0 :(得分:13)

您可以使用XPath的not()功能。

//a[@href='#'][@class='button save-as'][@title='Save As...'][not(text())]