Please post your Web Driver questions in official Web Driver forum

Wednesday, January 14, 2015

Return only first or last element from webelements collection

We often come across situation when there are multiple elements on a page and we probably like to exercise only a few of them using selenium webdriver. May be just first and last element. For example on a search result page we may like to click on only first and last link and not all. This is when Iterables API comes handy. (By the way I am assuming that you have already completed watching selenium training videos :)). Once we have collection of web element then we can use Iterables to get only first or last element as following -

Consider that we fetch collection of element as -

List<WebElement> webElements = getDriver().findElements(By.id("htmlID"));
 
Now we can get the first web element from this collection as - 

WebElement firstElement = Iterables.getFirst(webElements, 
getDriver().findElement(By.id("defaultElement")));
 
Herein second argument -
 
(getDriver().findElement(By.id("defaultElement"))) 
 
in the method getFirst is the default element which would be used 
when collection is empty. Once we have control of "firstElement" 
WebElement then we can click on it or use various other WebDriver
methods 
 
And we can get the last element from collection as - 
 
WebElement lastElement = Iterables.getLast(webElements, 
getDriver().findElement(By.id("defaultElement")));
 
Here again, second argument of method getLast is default element
 
So next time you want to exercise only first and last element from
a collection of web element then you can use these handy APIs and not
any weird loop. Stay tuned for more test automation tips :)

Fork me on GitHub