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

3
我在一个网页中有以下元素。我想获取id为“pmt-id-234”的元素,该元素具有类名为“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. 我不知道“pmt-id-123”中的加粗部分,因此无法直接查询ID。
  2. 类名为“typeX”的div可以嵌套多个级别。

尝试了什么?以下代码给出两个div元素。

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

现在,如何获取具有class="type2"的后代div的div?
以下内容没有产生任何结果。
'//*[@id="cards"]//*[starts-with(@id,"pmt-id-")//*[contains(@class, "type2")]]'
'//*[@id="cards"]//*[starts-with(@id,"pmt-id-")][contains(@class, "type2")]'

请告诉我如何做这个?

1个回答

4

若页面中只有 div,建议使用 div 进行测试,而非使用 *

以下 XPath 将选择一个具有以 pmt-id- 开头的 id,并且还有一个 class 为 type2 的后代 divdiv,它处于一个带有 id 为 cardsdiv 下:

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

请注意,匹配@class时可能需要额外小心,以避免匹配到type22abctype2之类的类型,如果这样的类型有可能存在。

谢谢 @kjhughes,那可行!而且,它们并不全是div。 - ragesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接