2017-10-06 69 views
1

有多個具有相同xpath的String元素。我有使用List<WebElement>機制的頁面對象模型中的商店元素。在我的測試用例中,我想打印列表的最後一個字符串值。如何在Selenium中打印List Array的最後一個字符串值?

下面是存儲在存儲庫中的元素的代碼。

public Collection<WebElement> UpdatedMessageList(){ 
    Collection<WebElement> element=driver.findElements(By.xpath("//p[@class='msg-paragraph-panel msg-paragraph-msg ng-binding']")); 
    return element; 
} 

任何人都可以幫助我從我的測試用例打印最後一個字符串值嗎?

回答

0

我非常確定上面的代碼會給你編譯錯誤,不知道你是否正在使用Java 9,而且有什麼改變。

此外,不要使用genertic集合類,findElements回報List of WebElements

public WebElement UpdatedMessageList(){ 
    List<WebElement> element = driver.findElements(By.xpath("//p[@class='msg-paragraph-panel msg-paragraph-msg ng-binding']")); 
    return element.get(element.size()-1); 
} 
+0

列表使用從零開始的索引。 – Mureinik

1

findElements返回List,不是任何舊Collection,所以你可以使用一個位置get(int)

public WebElement UpdatedMessageList(){ 
    List<WebElement> elements = 
     driver.findElements(By.xpath(
      "//p[@class='msg-paragraph-panel msg-paragraph-msg ng-binding']")); 
    if (elements.isEmpty()) { 
     return null; // Or throw some meaningful exception 
    } 
    return elements.get(elements.size() - 1); 
} 
+0

我認爲元素永遠不會爲空,因此只需檢查它是否爲空即可。 –

+0

@GaurangShah我再次檢查了[javadoc](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#findElements-org.openqa.selenium.By-) ,你是對的 - 如果沒有找到元素,則返回一個空的List。我相應地編輯了我的答案。 – Mureinik

相關問題