The Problem
If you
selenium script fails to find element on page by provided locator, it throws
NoSuchElement exception. NoSuchElement is an exception which
is basically like crashing the program into a wall. Whenever this error comes,
script execution gets stopped.
A Solution
As an automation developer, I can ensure uninterrupted
script execution in two ways
1.
Using try/catch
block
Let’s try to implement it in an example –
NoSuchElement error
without Try/Catch Handling
public
static void main(String[] args) {
WebDriver
driver = new FirefoxDriver();
driver.get("http://thebuddhatree.blogspot.in/");
driver.findElement(By.id("name")).click();
}
Note – This program will generate error and script execution gets
stopped if element with provided locator is not on page.
NoSuchElement error with
Try/Catch Block
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class NoSuchElementError {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("http://thebuddhatree.blogspot.in/");
try {
driver.findElement(By.id("name")).click();
} catch
(NoSuchElementException e) {
System.out.println("In
Catch Block");
}
System.out.println("Outside
Block, resume executing other code");
}
}
Note – This program will generate error but script execution will
continue for remaining code.
2.
Using FindElements()
method
Build into Selenium is an ability to search multiple elements using
single action
findElements()
method behavior can be summarized as follows
-
·
On Zero Match : return an empty list
·
On One Match : returns list of one WebElement
only
·
On One+ Match : returns list with all matching elements
NoSuchElement error
using FindElements()
public static void main(String[] args) {
WebDriver
driver = new FirefoxDriver();
driver.get("http://google.in/");
List
<WebElement> elements =driver.findElements(By.id("name"));
if (elements.size() == 0){
System.out.println("Element Not
Found");
}
}
Expected
Behavior
- · Open the Browser
- · Load the page
- · Search for an element
- · Fails to find element
- · Script execution continued
Conclusion
Happy Learning
Please ask questions on Testing Forum, in case of any issues or
doubts or questions.