[英]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.