如何使用带有多个标准的xpath选择HTML Link元素

时间:2012-07-16 12:02:13

标签: html xpath

在页面HTML中,有几个HTML链接,其名称包含一些子节点。

我想只检索其中一个;以下内容:

<a href='foo'>
   <b>Bar</b>
   <div style="height: 18px;">Garbo</div>
</a>

要定位它,我想要精确地使用xpath:&#34; 带给我的链接包含&#34; Bar&#34; as&#34; Garbo&#34;,如果它们在分开的子节点中则无关紧要&#34;。

我尝试了这个,但在阅读了一些关于contains函数的文章之后,这一行永远不会起作用:

//a[contains(text(),"Bar") and contains(text(),"Garbo")]

我可以做些什么来满足我的要求?

2 个答案:

答案 0 :(得分:4)

您需要使用的选择器是

//a[./*[contains(text(),"Bar")] and ./*[contains(text(),"Garbo")]]

答案 1 :(得分:1)

使用

//a[descendant::text()[contains(., 'Bar')] 
  and 
    descendant::text()[contains(., 'Garbo')]
    ]

这将选择具有包含字符串“Bar”的后代(不仅是子)文本节点的任何a元素以及包含字符串“Garbo”的后代文本节点。

这会选择所需的a元素,即使它是以下

<a href='foo'>
   <b><i>Bar</i></b>
   <div style="height: 18px;"><span>Garbo</span></div>
</a>