html - 什么 xpath 1 表达式可以对多行​​文本进行不区分大小写的匹配?

标签 html selenium xpath

我有一些 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/

相关文章:

java - 运行Appium测试时找不到APK文件

java - 使用 selenium webdriver switchTo() 导航嵌套的未命名 iframe

java - 如何使用java的selenium html单元驱动程序读取带有无限滚动条的页面?

javascript - 在输入框中创建占位符的打字和删除效果动画

javascript - 如何根据第一个 <select> 选项填充第二个 <select>

xml - 获取子节点包含属性的节点

python - 带有 Scrapy 节点的 XPath 开头为\n

xpath - Camel:如何基于xpath表达式来操纵输出消息/设置头

javascript - 如何对特定数字中的数字进行分类?

jquery - 如何使用 jQuery 更改 Span 的内容?