我有一些 html 标记,其中包含许多如下所示的标签:
<label>One two three four</label>
<label>One two three<br>four</label>
我正在尝试根据文本字符串“一二三四”访问 Selenium 测试中的元素。我希望能够匹配上述两个示例。
我对 xpath 的第一次尝试如下所示:
//label[text()[contains(., 'One two three four')]]
这对于不包含 <br>
的标签效果很好。在文本中,但未能找到具有 <br>
的第二个实例.
做了一些研究,似乎标准化空间应该起作用,但似乎不起作用。这是我尝试过的xpath,它只返回第一个节点
//label[text()[contains(normalize-space(.), 'One two three four')]]
我也尝试过这个,但它返回零节点
//label[normalize-space(text())[contains(., 'Generate')]]
那么,有没有办法制作一个 xpath 来查找带有文本“一二三四”的标签,即使有 <br>
实际 html 标记中的元素?
最佳答案
或者translate()
去掉空格然后匹配:
$ cat foo.html
<label>One two three four</label>
<label>One two three<br>four</label>
$ xpquery -p HTML '//label[contains(translate(normalize-space(.), " ", ""), "Onetwothreefour")]/text()' foo.html
One two three four
One two three
four
$
关于html - 什么 xpath 1 表达式可以对多行文本进行不区分大小写的匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32786821/