You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过XPath获取第二个指定data-activity-type的div标签ID?

获取第二个目标div的ID的几种可行方案
  • 使用XPath位置索引直接定位
    利用XPath的索引特性(索引从1开始),给匹配的元素表达式加上位置限定,直接获取第二个元素:

    String secondId = driver.findElement(By.xpath("(//div[@data-activity-type='CompatCheck'])[2]")).getAttribute("id");
    

    注意必须用括号把整个匹配表达式包裹,否则[2]会被解析为匹配元素的子节点索引,而非元素本身的位置。

  • 先获取所有匹配元素再选取第二个
    先调用findElements拿到所有符合条件的元素列表,再通过列表索引(Java中列表索引从0开始)获取第二个元素:

    List<WebElement> compatCheckDivs = driver.findElements(By.xpath("//div[@data-activity-type='CompatCheck']"));
    // 可以先判断列表长度避免索引越界
    if (compatCheckDivs.size() >= 2) {
        String secondId = compatCheckDivs.get(1).getAttribute("id");
    }
    

    这种方式更健壮,能应对元素数量变化的场景,避免出现索引越界异常。

  • 通过ID特征精准定位(适用于ID有规律的场景)
    如果第二个div的ID有固定特征(比如示例中的110007比第一个0007多前缀11),可以直接通过ID的部分匹配来定位:

    String secondId = driver.findElement(By.xpath("//div[@data-activity-type='CompatCheck' and starts-with(@id, '11')]")).getAttribute("id");
    

    如果ID是固定值而非动态生成的,也可以直接用ID定位:

    String secondId = driver.findElement(By.id("110007")).getAttribute("id");
    

内容的提问来源于stack exchange,提问作者nayansFosgit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:40:30