我正在使用Selenium WebDriver和Java。我正在嘗試創建一個循環遍歷WebElements列表以返回包含文本「Ooga Booga」的第一個WebElement的方法,如果列表中沒有包含此文本的元素,則返回null。如何循環訪問WebElements列表並選擇一個具有條件的WebElement?
String myText = element.findElement(By.cssSelector("classC")).getText();
我怎樣才能繼續循環通過我的列表,而忽略任何元素沒有「someDiv:
public class myClass {
private static WebElement element = null;
private static List<WebElement> elements = null;
public static WebElement returnOneElement (WebDriver driver){
elements = driver.findElements(By.cssSelector("someSelector"));
for (WebElement element : elements){
String myText = element.findElement(By.cssSelector("classC")).getText();
if (myText.contains("Ooga Booga")) {
return element;
}
}
return null;
}
,直到我遇到不具有這種屬性的元素這一切工作正常「裏面呢?
<div class="someSelector">
<div class="classA">
<div class="classB">
</div>
<div class="someSelector">
<div class="classA">
<div class="classB">
<div class="classC">
</div>
我需要搜索div「classC」中的文本。
SomeDiv是什麼?那是標記名div,還是其他一些css路徑定位器?你提到的屬性,所以我假設一個類名或某種類型。如果是這樣,你可以使用不需要該類名的另一個cssSelector。嘗試通過元素標記名獲取列表。你不必擔心這種方式丟失屬性 – robx
這是另一個CSS路徑定位器..我想這個比喻可能有所幫助: 我正在循環一副牌。我繼續瀏覽這些卡片,直到我找到一顆心靈之王。我正在搜索每個卡'someSelector',並檢查它是否是一個心臟'someDiv',然後檢查它是否是King'myText'。只要套牌中的每張牌都是一顆心,這種方式就可以正常工作。但是當我遇到一個Spade的時候,這將拋出一個NoSuchElementException,因爲它沒有在卡中看到一個Heart。我正在尋找一種方法,比如'isEmpty()',但對於單個'WebElement'。 – qaNoob
對不起,我明白你想要什麼,但很難幫助沒有HTML。我們所要做的只是猜測 – robx