2

这是代码:

<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")]
4

3 回答 3

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']
于 2013-01-02T19:32:12.010 回答
1

就像是

li[div[@class='xyz']//div[@class='headline' and contains(text(),"Mongo like candy"))]]//input[@type='checkbox']

除非我弄乱了括号。(也就是说,您不仅选择li,而且选择正确的li)。

于 2013-01-02T19:05:03.633 回答
0

即使这样也有效:

//li[1]/div[1]/input[@type='checkbox']

如果页面中引入了更多的 div 标签,它可能会失败。

于 2015-02-17T21:34:32.813 回答