使用Xpath选择具有特定后代的元素

时间:2013-06-21 14:04:43

标签: xpath

我想选择包含带有id =“liveDeal152_dealPrice”的SPAN的所有LI元素作为后代。我如何用xpath做到这一点?

这是一个示例html

<ul>
    <li id="liveDeal_152">
        <p class="price">
            <em>|
                <span class="WebRupee">₹ </span>
                <span id="liveDeal152_dealPrice">495 </span>
        </p>
    </li>

    <li id="liveDeal_152">
        <p class="price">
            <em>|
                <span class="WebRupee">₹ </span>
                (price hidden)
        </p>
    </li>
</ul>

2 个答案:

答案 0 :(得分:1)

//li[.//span[@id = 'liveDeal152_dealPrice']]应该这样做。或者更详细但更接近您的文字说明//li[descendant::span[@id = 'liveDeal152_dealPrice']]

答案 1 :(得分:1)

使用此

//li[.//span[@id="liveDeal152_dealPrice"]]

选择

ALL <li> ELEMENTS
//li[                                    ]
     THAT HAVE A <span> DESCENDANT
     .//span[                           ]
             WITH id ATTRIBUTE EQUAL TO "liveDeal152_dealPrice"
             @id="liveDeal152_dealPrice"

那就是说,它看起来不是一个非常明智的元素选择,主要是由于动态看id。如果您要使用它一次,它可能没问题,但是如果您正在使用它,比如说,进行测试并将多次重复使用,则可能会造成麻烦。您确定在更改网站和/或数据库时这不会发生变化吗?


作为旁注:

  • ul代表&#34;无序列表&#34;
  • ol代表&#34;有序列表&#34;
  • li代表&#34;列表项&#34;