selenium如何获取webelement中的所有元素

rn0zuynd  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(450)

我想把所有元素都放在 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 是的,但我好像找不到

whitzsjs

whitzsjs1#

我们可以用 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());

相关问题