【发布时间】:2020-12-11 23:14:25
【问题描述】:
我正在尝试获取 selenium WebElement 中的所有元素,例如:
<div>
<element>
<header>header</header>
<p>Paragraph</p>
</element>
<element>
<p>Another Paragraph</p>
</element>
</div>
我想获取里面所有元素的列表,包括子元素,就像这样......
- div
- 元素
- 标题
- 段
- 元素
- 段
所以我试过了
element.findElements(By.xpath("*"))
但这只会返回
- 元素
- 元素
然后我尝试了一种递归方法来获取所有孩子
private static ArrayList<WebElement> getAllElements(WebElement element, ArrayList<WebElement> ret) {
ret.add(element);
List<WebElement> childs = element.findElements(By.xpath("*"));
for(WebElement e: childs)
getAllElements(e,ret);
return ret;
}
private static List<WebElement> getAllElements(WebElement element) {
return getAllElements(element,new ArrayList<WebElement>());
}
但是查询findElements() 耗时太长
我在想一定有xpath 方式,但我似乎找不到它
【问题讨论】:
-
find.Elements(By.xpath("//div") 将返回该 div 的所有元素
-
@ratsstack 这将返回页面的所有
divs
标签: java selenium selenium-webdriver xpath