如何用XPath从div标签获取指定ID?两类场景技术咨询
XPath 解决方案:两种HTML场景的ID提取
场景一:通过唯一data属性提取单个元素的ID
给定HTML代码:
<div id="086" data-activity-type="CompatCheck" class="Activity"></div>
已知data-activity-type="CompatCheck"是唯一标识,class属性重复,需提取该div的id。
解决方法:
可以通过XPath精准定位元素后提取id属性:
String targetId = driver.findElement(By.xpath("//div[@data-activity-type='CompatCheck']")).getAttribute("id");
执行后targetId的值为086。
解释:用@data-activity-type='CompatCheck'锁定唯一匹配的div元素,再通过getAttribute("id")直接提取其id属性值。
场景二:提取同属性匹配的第二个元素ID
给定HTML代码:
<div id="0007" data-activity-type="CompatCheck" class="Activity"></div> <div id="110007" data-activity-type="CompatCheck" class="Activity"></div>
原代码只能获取第一个元素的id,需提取第二个元素的id。
解决方法:
利用XPath的索引功能(XPath索引从1开始计数),定位第二个匹配元素:
// 方法一:直接定位第二个元素 String secondId = driver.findElement(By.xpath("//div[@data-activity-type='CompatCheck'][2]")).getAttribute("id"); // 方法二:获取所有匹配元素后取第二个 List<WebElement> compatElements = driver.findElements(By.xpath("//div[@data-activity-type='CompatCheck']")); String secondId = compatElements.get(1).getAttribute("id"); // Java列表索引从0开始,取索引1对应第二个元素
执行后secondId的值为110007。
解释:[2]指定选择匹配条件的第二个div元素;或者通过findElements获取所有匹配元素的列表,再通过列表索引获取目标元素的id。
内容的提问来源于stack exchange,提问作者nayansFosgit
相关产品推荐
相关产品推荐

