java 如何在webdriver中使用Xpath按精确文本匹配搜索节点

ryhaxcpt  于 2023-01-29  发布在  Java
关注(0)|答案(7)|浏览(232)

我需要一个关于在webDriver中使用xpath搜索精确文本的小帮助。
假设我有如下的html ..

<html><body>
  <table>
    <tr>
      <td><button>abcd</button></td>
      <td><button>abc</button></td>
    </tr>
  </table>
</body></html>

现在我想点击按钮“abc”
我使用xpath作为//button[contains(text(),'abc')],但它总是在按钮“abcd”上执行,因为它也包含文本“abc”。在这方面,我需要一个 predicate 或一些其他过程,可以搜索确切的文本,而不是包含文本。
我也尝试了//button[matches(text(),'abc')]//button[matches($string,'abc')]//button[Text='abc')]//button[.='abc')]和更多,但这些都没有工作,以确定“abc”按钮。
我不知道我的xpath版本是否有问题,因为我不知道版本,但我使用的是java 1.6 JDK。
虽然我的确切场景不是所示的示例,但需要应用类似的逻辑。
因此,任何帮助或建议将不胜感激。

up9lanfz

up9lanfz1#

我将使用下一个xpath //button[text()='abc']。您提到了text()函数,但我不确定语法是否正确。您还尝试使用contains()--它搜索部分文本,WebDriver获取找到的第一个元素。您的情况是<button>abcd</button>按钮

hyrbngr7

hyrbngr72#

要查找元素'abcd',只需用途:

//button[contains(text(),'abcd')]

要查找'abc',请使用normalize-space()函数,该函数将清理文本以便进行比较。

//button[normalize-space(text())='abc']
wecizke3

wecizke33#

精确搜索:

button[text()='abc']

对于模式匹配搜索:

button[starts-with(.,'abc')]
uyhoqukh

uyhoqukh4#

//button[.="abc"]

相等运算符前面的点将进行文本比较。另一个例子是/PROJECT[.="MyProject"]来自xPath Java tutorial

cgyqldqp

cgyqldqp5#

尝试使用ends-with代替contains。如果按钮没有唯一属性,您也可以添加父层次结构。例如//table/tr/td[1]。

gcmastyq

gcmastyq6#

使用下面这样的东西对我来说非常好。

//button[(contains(.,'abc')) and not(contains(.,'abcd'))]
jdg4fx2g

jdg4fx2g7#

精确搜索:.//按钮[./文本()='abc ']
注意:使你没有空间可进

相关问题