XPath // div [contains(text(),'string')]无法选择包含'string'的div

Ela*_*n S 15 html xpath

这是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()测试之前连接在一起,因此测试通过.