Selenium如何获取无类/ID且标签名相同的元素属性值?
解决获取多个meta标签content属性的问题
嘿,我完全懂你现在的困惑!你当前的代码driver.findElement(By.xpath("//meta[@property='article:tag']")).getAttribute("content")只能拿到第一个匹配的<meta>标签的content值,因为findElement()方法本身就只会返回页面中第一个符合定位条件的元素。要获取所有article:tag对应的meta标签内容,得换个思路用批量定位的方法~
正确的实现步骤
你需要用findElements()方法(注意是复数形式)获取所有匹配的元素列表,然后遍历这个列表逐个提取content属性值:
// 1. 获取所有符合条件的meta标签元素集合 List<WebElement> tagMetaElements = driver.findElements(By.xpath("//meta[@property='article:tag']")); // 2. 创建列表存储所有content值 List<String> tagContentList = new ArrayList<>(); // 3. 遍历元素集合,逐个提取content属性 for (WebElement metaElement : tagMetaElements) { String contentValue = metaElement.getAttribute("content"); tagContentList.add(contentValue); } // 此时tagContentList就包含了所有标签值:["amd", "game", "what"]
为什么你之前的尝试没生效?
- 不存在
getAttributes()方法:单个WebElement只有getAttribute()方法,要批量获取必须先拿到所有元素再循环处理; - 直接循环单个元素没用:你之前如果是对
findElement()返回的单个元素做循环,自然只能处理那一个值,根本碰不到后面的标签。
如果你想依次处理每个值(不存入列表)
也可以直接在循环里做即时处理,比如打印或者业务逻辑操作:
for (WebElement metaElement : tagMetaElements) { String currentTag = metaElement.getAttribute("content"); System.out.println("当前标签值:" + currentTag); // 这里添加你需要的业务处理代码 }
内容的提问来源于stack exchange,提问作者Zubkover
相关产品推荐
相关产品推荐

