Selenium技术问询:如何获取指定网页中h3标签内的所有用户名
问题解决方法
你的问题出在当前XPath匹配到了页面顶部的标题<h3>(文本为“Directie”),而非每个用户卡片内的用户名<h3>。页面中存在多个带inner类的<div>,visibilityOfElementLocated只会返回第一个匹配到的元素,所以你拿到的是标题文本。
修正步骤:
- 精准定位用户卡片内的
<h3>:
观察页面结构,每个用户的信息都包裹在带team-member类的容器中,因此需要调整XPath,只匹配用户卡片里的<h3>元素://div[contains(@class,'team-member')]//div[contains(@class,'inner')]/h3 - 获取所有匹配元素并遍历:
使用visibilityOfAllElementsLocatedBy等待所有用户名称元素加载完成,再通过循环逐个提取文本。
完整代码示例:
// 等待所有用户名称元素加载完成 List<WebElement> userNameElements = wait.until( ExpectedConditions.visibilityOfAllElementsLocatedBy( By.xpath("//div[contains(@class,'team-member')]//div[contains(@class,'inner')]/h3") ) ); // 遍历获取每个用户名 for (WebElement element : userNameElements) { String userName = element.getText(); // 输出或处理用户名 System.out.println(userName); }
如果上述XPath仍不匹配,可检查页面实际DOM结构,确认用户卡片的父容器类名,替换team-member为对应类即可。
内容的提问来源于stack exchange,提问作者Erhan Yumer
相关产品推荐
相关产品推荐

