簡體   English   中英

Selenium 如何獲取 WebElement 中的所有元素

[英]Selenium how to get all elements inside a WebElement

我正在嘗試獲取 selenium WebElement所有元素,例如:

<div>
    <element>
        <header>header</header>
        <p>Paragraph</p>
    </element>
    <element>
        <p>Another Paragraph</p>
    </element>

</div>

我想得到一個包含子元素在內的所有元素的列表,就像這樣......

  1. div
  2. 元素
  3. 標題
  4. 段落
  5. 元素
  6. 段落

所以我試過這個

element.findElements(By.xpath("*"))

但這只會返回

  1. 元素
  2. 元素

然后我嘗試了一種遞歸方法來獲取所有孩子

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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM