Skip to main content

Difference between findElement and findElements method in Selenium with Java

findElement and findElements methods are used to find the elements on a webpage. Below are the difference between both:

Point of Distinction findElement findElements
Use A command used to uniquely identify a web element within the web page. Used to identify a list of web elements within the web page.
Returns It returns the first matching element. returns the list of all matching elements. Each Web element is indexed with a number starting from 0 just like an array
NoSuchElementException It throws a NoSuchElementException exception when it fails to find the element. the findElements method returns  an empty list when the element is not available or doesn’t exist on the page. It doesn’t throw NoSuchElementException.
Syntax driver.findElement(By.locatorType("Locators Value")); driver.findElements(By.locatorType("Locator Value"));

Example 

package com.pb.seltest.util;

import java.util.List;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class DiffFindElements 
{
    WebDriver driver;
	
    @BeforeClass
    public void befClass()
    {
        System.setProperty("webdriver.chrome.driver",System.getProperty("user.dir") + "//drivers//chromedriver");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        driver.get("http://www.automationpractice.com");
    }
	
    @Test
    public void MyMethod()
    {
        System.out.println("findElement Output");
        WebElement element = driver.findElement(By.xpath("//div[@id='block_top_menu']/ul/li/a"));
        System.out.println(element.getText());
		
        System.out.println("findElements Output");
        List<WebElement> allMenus = driver.findElements(By.xpath("//div[@id='block_top_menu']/ul/li/a"));
		
        for(int i = 0; i < allMenus.size(); i++)
            System.out.println(allMenus.get(i).getText());
    }	
}

Output:

findElement Output
WOMEN
findElements Output
WOMEN
DRESSES
T-SHIRTS
PASSED: MyMethod

In above example, we are finding menu links for automationpractice.com. We have used same locators here, but different methods which are findElement and findElements. findElement will only retrieve first link with Name Women and findElements will retrieve all the menu links Women, dresses and t-shirts.

For findElement we are storing result in WebElement because it is returning single result. For findElements we have used List of WebElements because it is returning list of elements.

Submitted by ksharma on October 4, 2020

About

At ProgramsBuzz, you can learn, share and grow with millions of techie around the world from different domain like Data Science, Software Development, QA and Digital Marketing. You can ask doubt and get the answer for your queries from our experts.