2017-10-06 73 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

相关问题