xpath查找前一个元素

时间:2018-08-16 19:22:15

标签: xpath

有这样的结构:

<div "nothing unique there">
<img "repeating parameters">
<span>
    repeating text
</span>
<span>
    <span>
        <img class="unique name">
    </span>
    <span>
        <strong>Tools</strong>
    </span>
</span>
.
.

我需要使用XPath查找<img "repeating parameters"> 上面的代码中唯一唯一的部分是<img class="unique name">

我尝试了一下,但是没用:

//span/img[@class="unique name"]/preceding-sibling::img

2 个答案:

答案 0 :(得分:1)

恕我直言,如果您想选择img,则它应该是XPath的主要部分。所以,让我们开始

//img

现在,让我们添加该img的条件。似乎有span以下消息,因此我们将其添加为条件:

//img[following-sibling::span]

现在不能是任何span。它需要包含另一个img

//img[following-sibling::span//img]

img不仅是img,而且还具有一些特殊的属性。让我们将它们作为条件添加到内部img中:

//img[following-sibling::span//img[@class="unique name"]]

你去了。恕我直言,一个不错且易于理解的XPath。


当然,也可以像您一样先进入唯一的img

//span/img[@class="unique name"]

然后,别忘了向外走:

//span/img[@class="unique name"]/../..

之后,您可以移至上一个兄弟姐妹:

//span/img[@class="unique name"]/../../preceding-sibling::img

答案 1 :(得分:0)

<img "repeating parameters">不是您发现的img元素的前一个同级,而是它的祖父母<span>的同级元素。仅使用preceding::img而不是preceding-sibling::img