当前位置:  开发笔记 > 前端 > 正文

使用链接文本查找链接的xpath?

如何解决《使用链接文本查找链接的xpath?》经验,为你挑选了1个好方法。

在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使用链接文本查找链接?



1> Mathias Müll..:

一些已经给出了答案的答案,有些则没有。我认为,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"]]

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有