一尘不染

如何在XPath中选择一个空元素?

selenium

我们选择带有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())]")))

阅读 228

收藏
2020-06-26

共1个答案

一尘不染

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

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