这是HTML代码:
<div> <span></span> Elangovan </div>
Run Code Online (Sandbox Code Playgroud)
我想div根据其包含的文本编写一个XPath .我试过了
//div[contains(text(),'Elangovan')]
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
ale*_*cxe 27
替换text()为string():
//div[contains(string(), "Elangovan")]
Run Code Online (Sandbox Code Playgroud)
或者,您可以检查span以下文本兄弟包含文本:
//div[contains(span/following-sibling::text(), "Elangovan")]
Run Code Online (Sandbox Code Playgroud)
另见:
kjh*_*hes 10
除了alecxe的正确答案(+1)之外,以下稍微简单且稍微更惯用的XPath将以相同的方式工作:
//div[contains(., "Elangovan")]
Run Code Online (Sandbox Code Playgroud)
您原来使用的XPath之所以text()不起作用是这text()将选择的所有文本子节点div.但是,contains()在第一个参数中需要一个字符串,当给定一组节点文本节点时,它只使用第一个参数.这里,第一个文本节点包含空格,而不是搜索到的字符串,因此测试失败.使用隐式.或显式string()第一个参数,所有文本节点后代在执行contains()测试之前连接在一起,因此测试通过.