在Selenium WebDriver中,如何使用 link text(“Add New Button”)为下面的HTML使用XPath表达式?
<a href="SOME URL">
<span >
<i class=""/>
</span>Add New Button
</a>
我试着检查以下元件,但都不起作用。
//a[text()='Add New Button']
//a[contains(text(),'Add New Button']
//a/span/i[text()='Add New Button']
//a/span/i[contains(text(),'Add New Button']
我知道3号和4号不会,但我刚刚试过了。
那么,对于这样的HTML DOM,如何使用XPath通过链接文本找到链接呢?
4条答案
按热度按时间qacovj5a1#
一些已经给出的答案起作用,但另一些没有。我认为OP将受益于更多的解释。
您的原始表达式:
不起作用,因为包含“添加新按钮”的文本节点在结尾处也有一个换行符。
下一条:
不起作用(忽略缺少的括号),因为
text()
返回节点的 * 序列 *,而类似contains()
的函数只计算序列中的 * 第一个 * 节点。在这种情况下,a
中的第一个文本节点只包含空格,而 * 不是 * 包含“Add New Button”的节点。您可以通过以下方式验证此声明:
该表达式将测试
a
的 second 文本节点是否包含“Add New Button”,并且该表达式将返回a
元素。但在这种情况下,最佳解决方案是:.
将计算为元素的所谓“字符串值”,即元素的所有文本节点的串联,其中将包括“添加新按钮”。normalize-space()
的解决方案也是可能的,但它具有嵌套 predicate :uklbhaso2#
使用XPath表达式,可以使用以下语句检查元素是否包含特定文本:
5jdjgkvh3#
链接文本在主文本右侧包含不必要的空格,因此您需要执行以下操作来删除这些空格:
bjg7j2ky4#
使用以下XPath表达式:
或
或
或使用
cssSelector
-