Locating elements using findElements method
Selenium WebDriver provides the findElements()
method, which enables the acquisition of a list of elements matching the specified search criteria. This method is useful when we want to work with a group of similar elements. For example, we can get all the links displayed on a page or get rows from a table, and so on.
In this recipe, we will get all the links and print their targets by using the findElements()
method.
How to do it...
Let's create a test which will get all the links from a page and verify the count of links and print target for each link as follows:
@Test public void testFindElements() { //Get all the links displayed on Page List<WebElement> links = driver.findElements(By.tagName("a")); //Verify there are four links displayed on the page assertEquals(4, links.size()); //Iterate though the list of links and print //target for each link for(WebElement link : links) System.out.println(link.getAttribute("href")); }
How it works...
The findElements()
method returns all the elements matching with the locator specified as a list of WebElements
. In Java, we can use the List
class to create an instance of list of WebElements
.
List<WebElement> links = driver.findElements(By.tagName("a"));
The size()
method of the List
class will tell us how many elements are there in the list.
assertEquals(4, links.size());
We can iterate using this list in the following way, getting a link and printing its target value:
for(WebElement link : links) System.out.println(link.getAttribute("href"));
See also
The Locating an element using the findElement method recipe