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