0

我想选择所有包含 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>
4

2 回答 2

1

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

于 2013-06-21T14:10:49.197 回答
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代表“无序列表”
  • ol代表“有序列表”
  • li代表“列表项”
于 2013-06-21T14:10:56.677 回答