以下是代码:
<li class="abc">
<div class="abc">
<input type="checkbox">
</div>
<div class="xyz">
<div class="headline">Mongo like candy</div>
<div>
</li>
<li class="abc">
<div class="abc">
<input type="checkbox">
</div>
<div class="xyz">
<div class="headline">Candygram for mongo</div>
<div>
</li>
Xpath挑战。我想找到包含标题“Mongo like candy”的li的复选框,以便我可以使用Selenium选择它。换句话说,您如何从此处找到复选框:
li//div[@class='abc']//input[@type='checkbox']
但在同一父节点中使用不同的属性对其进行限定:
li//div[@headline][contains(text(),"Mongo like candy")]
答案 0 :(得分:1)
类似
的Li [DIV [@class =&#39; XYZ&#39;] // DIV [@class =&#39;标题&#39;并包含(text(),&#34; Mongo like candy&#34;))]] //输入[@type =&#39;复选框&#39;]
除非我搞砸了括号。 (也就是说,您不仅选择li
,还选择正确的li
)。
答案 1 :(得分:1)
基本思想是用谓词限定最终路径,即
li[/*predicate here*/]//div[@class='abc']//input[@type='checkbox']
谓词表达了你想要的li的条件:
.//div[@class='headline' and contains(text(), "Mongo like candy")]
将它们放在一起产生:
li[.//div[@class='headline' and contains(text(), "Mongo like candy")]]//div[@class='abc']//input[@type='checkbox']
答案 2 :(得分:0)
即便如此:
//li[1]/div[1]/input[@type='checkbox']
如果页面中引入了更多div标签,则可能会失败。