在Selenium WebDriver中,如何使用链接文本(“添加新按钮”)为下面的HTML使用xpath
Add New Button
我尝试检查以下元素,但所有工作
1) //a[text()='Add New Button'] 2) //a[contains(text(),'Add New Button'] 3) //a/span/i[text()='Add New Button'] 4) //a/span/i[contains(text(),'Add New Button']
我知道3和4不会,但是只是尝试了一下。
因此,对于这样的HTML DOM,如何使用xpath使用链接文本查找链接?
一些已经给出了答案的答案,有些则没有。我认为,OP将通过更多的解释而受益。
您的原始表情:
//a[text()='Add New Button']
不起作用,因为包含“添加新按钮”的文本节点的末尾也有换行符。
下一个:
//a[contains(text(),'Add New Button']
不起作用(撇开缺少的括号),因为text()
返回节点序列,而类似的函数contains()
将只求值序列中的第一个节点。在这种情况下,其中的第一个文本节点a
仅包含空格,而不是包含“添加新按钮”的文本节点。
您可以使用以下方法验证此声明:
//a[contains(text()[2],'Add New Button')]
这将测试的第二个文本节点是否a
包含“添加新按钮”-此表达式将返回该a
元素。但是在这种情况下,最好的解决方案是:
//a[contains(.,'Add New Button')]
.
将评估为元素的所谓“字符串值”,即其所有文本节点(包括“添加新按钮”)的串联。
normalize-space()
也可以使用解决方案,但具有嵌套谓词:
//a[text()[normalize-space(.) = "Add New Button"]]