During automation in Selenium WebDriver, we come across various exceptions & we need to deal with them. Below is the list of various exceptions occur in selenium webdriver.
In general, hierarchy of Exceptions in any language is shown in below image –
There are main three types of Exceptions in Selenium WebDriver –
- Checked Exceptions – These Exceptions can be handled during compile time. If they are not handled, it gives compile time error. Example- FileNotFoundException, IOException etc.
- Unchecked Exceptions – These exceptions can not be handled during compile time & they got caught at run time. Example – ArrayIndexOutOfBoundException.
- Error – Errors which can not be handled by using even try catch block. Example -Assertion Error.
Below are few common exceptions received during selenium scripting in java – selenium.
WebDriverException
WebDriver Exception comes when we try to perform any action on the non-existing driver.
WebDriver driver = new InternetExplorerDriver(); driver.get("http://google.com"); driver.close(); driver.quit();
NoAlertPresentException
When we try to perform an action i.e., either accept() or dismiss() which is not required at a required place; gives us this exception.
try{ driver.switchTo().alert().accept(); } catch (NoAlertPresentException E){ E.printStackTrace(); }
NoSuchWindowException
When we try to switch to an window which is not present gives us this exception:
WebDriver driver = new InternetExplorerDriver(); driver.get("http://google.com"); driver.switchTo().window("Yup_Fail"); driver.close();
In the above snippet, line 3 throws us an exception, as we are trying to switch to an window that is not present.
NoSuchFrameException
Similar to Window exception, Frame exception mainly comes during switching between the frames.
WebDriver driver = new InternetExplorerDriver(); driver.get("http://google.com"); driver.switchTo().frame("F_fail"); driver.close();
In the above snippet, line 3 throws us an exception, as we are trying to switch to an frame that is not present.
NoSuchElementException
This exception is thrown when we WebDriver doesn’t find the web-element in the DOM.
WebDriver driver = new InternetExplorerDriver(); driver.get("http://google.com"); driver.findElement(By.name("fake")).click();
TimeoutException
Thrown when a command does not complete in enough time.
StaleElementException
StaleElementException occurs if I find an element, the DOM gets updated then I try to interact with the element.
If Javascript updates the page between the findElement call and the click call then I’ll get a StaleElementException. It is not uncommon for this to occur on modern web pages. It will not happen consistently however. The timing has to be just right for this bug to occur.
So how do I handle it? I use the following click method:
public boolean retryingFindClick(By by) { boolean result = false; int attempts = 0; while(attempts < 2) { try { driver.findElement(by).click(); result = true; break; } catch(StaleElementException e) { } attempts++; } return result; }
So, these the common exceptions which occur during automation which i tried to cover. Hope this helps !!!!