簡體   English   中英

Selenium:如何獲取給定 xpath 的子跨度元素列表

[英]Selenium: How to get list of child span elements given a xpath

我想獲取以下 xpath 的所有子跨度元素

//label[@for='someText']/span

這應該還給我

<span class="someClass">"Find this text"</span>
<span id="someId">"Find this text2"</span>

基本上,嵌套的 span 元素的數量可能會動態變化,在這種情況下,我們有 2 個 span 子元素,在某些情況下,可能只有 1 個或多個 span 元素。

目標:這背后的目的是為了比較目的獲取所有這些元素的文本。 一旦我得到這些元素,我就可以遍歷它們中的每一個,並根據它們的屬性獲取我想要的數據。

示例 HTML 格式:

<label for="someText">
  <span class="nestedClass">
    <h2 id="id">
      <span>"Hello"</span>
    </h2>
    <span class="someClass">"Find this text"</span>
    <br>
    <span id="someId">"Find this text2"</span>
  </span>
</label>

有沒有辦法實現這一目標? 有人可以幫我解決這個問題或任何更好的方法嗎?

謝謝你。

使用任何一個xpath都應該適合您。

List<WebElement> elements = driver.findElements(By.xpath("//label[@for='someText']/span/span"));

或者忽略誰是父母的跨度標簽 h2

List<WebElement> elements = driver.findElements(By.xpath("//label[@for='someText']/span//span[not(ancestor::h2)]"));

您可以使用以下 XPath:

//label[@for="someText"]/span/*[not(*)]/text()

這里謂詞*[not(*)]將過濾葉跨度節點。

您可以使用 size() 遍歷元素或使用 for 循環簡單地迭代列表。

List<WebElement> mySpans = driver.findElements(By.xpath("//label[@for='someText']/span//span"));
        
        int totalSpans = mySpans.size(); // This is the total count of spans - dynamic
        
// or simply iterate the list of webelements using for loop
        for(WebElement span : mySpans)
        {
            System.out.print(span.getText());
        }

暫無
暫無

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

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