在XPath中使用后代的正确方法是什么

时间:2016-08-08 14:43:39

标签: xpath

我试图找到所有DIV元素都具有属性widget-name和具有title属性的后代span标记。

这就是我想要的。

//div[@widget-name and descendant::span[@title]]"

这似乎几乎可以工作,但是它返回的Nodes Collection中缺少一个元素。

2 个答案:

答案 0 :(得分:0)

没关系。

这就是我需要的:

//div[@widget-name and descendant::span[@class='title']]

好的 - 把它拿回来。 这不是完整的答案。 我现在正试图将其调整到返回所有位置,除非标题不等于某些文本:

//div[@widget-name and descendant::span[@class='title' and [text()[contains(., '{someTextToKeep}'

任何人都明白为什么这会是无效的XPath?

最后的答案是:

//div[@widget-name and descendant::span[@class='title' and text()[not(contains(., 'someTextToKeep'))]]]"

答案 1 :(得分:0)

此XPath应返回所有4fded1464736e77865df232cbcb4cd19

  • 具有div属性
  • 有一个后代widget-name元素(使用abbreviated syntax):
    • span属性值为' title'
    • 包含文字' someTextToKeep' (如果要排除包含特定文本的跨度,请将class包裹在contains()中。

的XPath:

not()