[英]Selenium how to get all elements inside a WebElement
I'm trying to get all the elements inside a selenium WebElement
, for example:我正在尝试获取 selenium
WebElement
所有元素,例如:
<div>
<element>
<header>header</header>
<p>Paragraph</p>
</element>
<element>
<p>Another Paragraph</p>
</element>
</div>
I want to get a list of all the elements inside including child elements, like so...我想得到一个包含子元素在内的所有元素的列表,就像这样......
So I've tried this所以我试过这个
element.findElements(By.xpath("*"))
but this would return only但这只会返回
So then I tried a recursive method to get all of the childs然后我尝试了一种递归方法来获取所有孩子
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>());
}
But querying findElements()
takes too long但是查询
findElements()
花费的时间太长
I'm thinking there must be a xpath
way, but I can't seem to find it我想一定有一个
xpath
方式,但我似乎找不到它
We can use WebElement.findElements
method to get list of all the elements inside element.我们可以使用
WebElement.findElements
方法来获取元素内所有元素的列表。
For above HTML, to get list of all elements present inside div, we can use below code:对于上面的 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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.