Xpath:查找其后代具有特定属性值的元素

时间:2014-05-09 12:17:23

标签: xpath

我在网页中有以下元素。我想获取id为#34; pmt-id-234"的元素。它有一个classname的后代,类型为type2。

<div id="cards">
    <div id="pmt-id-123" class="payments">
        <div>
            <div class="type1">Text1</div>
        <div>
    </div>

    <div id="pmt-id-234" class="payments">
        <div>
            <div class="type2">Text1</div>
        <div>
    </div>
</div>   

注意:

  1. 我不知道&#34; pmt-id- 123 &#34;中突出显示的部分,因此无法使用ID直接查询。
  2. div与class =&#34; typeX&#34;可以嵌套多个级别。
  3. 尝试了什么?下面给出了两个div元素。

    '//*[@id="cards"]//*[starts-with(@id,"pmt-id-")]'
    

    现在,如何获取具有class =&#34; type2&#34;

    的后代div的div

    以下内容不会产生任何结果。

    '//*[@id="cards"]//*[starts-with(@id,"pmt-id-")//*[contains(@class, "type2")]]'
    '//*[@id="cards"]//*[starts-with(@id,"pmt-id-")][contains(@class, "type2")]'
    

    请告诉我怎么做?

1 个答案:

答案 0 :(得分:3)

如果只有div,我会针对*而不是divs进行测试。

此XPath将选择ID为div的{​​{1}}下面的cards,其ID为pmt-id-,并且还有divtype2 1}}:

'//div[@id="cards"]//div[starts-with(@id,"pmt-id-") and .//div[contains(@class, "type2"]]'

请注意,您可能需要特别注意与@class的匹配,以避免匹配type22abctype2(如果可能的话)。