如何通过xpath和内部文本获取元素?

时间:2017-05-23 22:52:33

标签: html xpath

我正在尝试使用xpath和内部文本找到UI弹出窗口。弹出式HTML是这样的:

Hello ? {some elements} What would you like to do today {more elements} Play or Die ? {Yes button, No button}.

我希望通过使用以下内容来获取此元素:

// div [contains(@innerText,'你好?今天你想做什么玩或死?')]

我该怎么做?或者有更好的方法来找到这个弹出窗口?这里没有Ids或永久课程。此外,DOM结构是可变的。

2 个答案:

答案 0 :(得分:3)

您应该能够使用xpath ver2的匹配功能:

//div[matches(text(), 'Hello ?\w+ What would you like to do today \w+')]

允许使用正则表达式。

答案 1 :(得分:1)

假设交错元素不包含内部文本,您可以使用.而不是@innerText来连接上下文元素中的所有文本节点(在本例中为div)。将.normalize-space()组合以删除前导和尾随空白字符,以及将连续的空白字符规范化为单个空格。使用normalize-space()可以删除.,因为它是默认参数:

//div[contains(normalize-space(), 'Hello ? What would you like to do today Play or Die ?')]