为什么我的xpath匹配不需要的元素?

时间:2013-07-09 20:40:22

标签: xpath

我正在尝试使用“foo”类

找到元素
<div id="foo1">
<div id = "foo2">
<div class = "foo">
</div>
</div>
</div>

这是我的xpath:

/div/div/div[contains(@class,'foo')]

这是它发现的代码:

<div id="foo1">
<div id = "foo2">
<div class = "foo-err">
</div>
</div>
</div>

路径返回div class =“foo-err”元素

2 个答案:

答案 0 :(得分:5)

contains()是子字符串匹配。它基本上是说“如果'foo'在class属性中 ANYWHERE ,则匹配元素”。

如果您想要完全匹配,请尝试

[@class='foo']

答案 1 :(得分:1)

如果您需要在类列表中匹配foo而不是foo-err,则需要一个更复杂的构造:[contains(concat(' ', @class, ' '), ' foo ')],它将查找foo中包含空格的foo全类字符串也被空格包围。因此'foo bar' - &gt; ' foo bar ' - &gt;包含' foo ',但'foobaz bar' - &gt; ' foobaz bar ' - &gt;不包含' foo '