我正在尝试使用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结构是可变的。
答案 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 ?')]