如何通过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
相关产品推荐
相关产品推荐

