在页面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")]
我可以做些什么来满足我的要求?
答案 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>