1. Overview
In this tutorial, we’ll learn how to check if an element exists using Selenium WebDriver.
For most checks, it’s better to use explicit waits to ensure that elements are present or visible before interacting with them. However, there are times when we need to simply know if an element exists without making assertions, enabling us to implement special additional logic based on the presence or absence of an element.
By the end of this tutorial, we’ll know how to check the presence of elements.
2. Using the findElements() Method
The findElements() method returns a list of web elements that match the By conditions. If no matching elements are found, it returns an empty list. By checking if the list is empty, we can determine whether the desired element exists:
boolean isElementPresentCheckByList(By by) {
List<WebElement> elements = driver.findElements(by);
return !elements.isEmpty();
}
It’s a clean and effective solution for many scenarios.
3. Using the findElement() Method
The findElement() method is another commonly used approach to locate elements on a web page. It returns a single web element if it’s present. It throws a NoSuchElementException if the element isn’t present.
To handle scenarios where the element might not exist, we should use a try-catch block to catch the exception. If the exception is thrown, it means the element is not present, so we catch it and return false. This method is useful when we’re certain that the presence of a single element is critical for the next steps in our test and we want to handle its absence explicitly.
By catching the NoSuchElementException, we can log an appropriate message, take corrective actions, or gracefully exit the test without crashing our script:
boolean isElementPresentCheckByHandleException(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
4. Conclusion
In this article, we’ve explored two essential methods for checking the existence of elements using Selenium WebDriver: findElements() and findElement() with exception handling. These methods help us know if an element exists without failing a test.
However, if we need to assert the presence of an element, we should use explicit waits with ExpectedConditions. By exploring and understanding these various approaches, we can confidently select the most appropriate method.
As always, the source code for the examples is available over on GitHub.