我正在尝试获取 Selenium 中的所有元素 WebElement
, 例如:
<div>
<element>
<header>header</header>
<p>Paragraph</p>
</element>
<element>
<p>Another Paragraph</p>
</element>
</div>
我想得到一个包含子元素在内的所有元素的列表,就像这样......所以我试过这个
element.findElements(By.xpath("*"))
但这只会返回然后我尝试了一种递归方法来获取所有 child
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
方式,但我似乎无法找到它
最佳答案
我们可以使用 WebElement.findElements
方法来获取元素内所有元素的列表。
对于上面的 HTML,要获取 div 中存在的所有元素的列表,我们可以使用以下代码:
// Get webelement for div tag
WebElement element = driver.findElement(By.tagName("div"));
// Below will return a list of all elements inside element
List<WebElement> webEleList = element.findElements(By.xpath(".//*"));
//For above given HTML it will print 5. As there are 5 elements inside div
System.out.println(webEleList.size());
关于java - Selenium 如何获取 WebElement 中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63541972/