Selenium: Handling NoSuchElementException
Seleniuim throws NoSuchElementException when it can't find the
element on the screen. This blog lists down the scenarios and strategy
to handle them.
To remedy this, set a page load timeout.
Consume the alert.
Element is hidden by an overlapping <div>
This is the easiest to resolve. In case, there's a lightbox, create an action to close it before clicking on the desired element.Page hasn't loaded
With Dojo usage, sometimes the page takes lot of time to load - at times causing "stop script" alerts as well.To remedy this, set a page load timeout.
driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.MINUTES);
Consume the alert.
public void acceptAlertIfPresent() { try { // Check the presence of alert Alert alert = driver.switchTo().alert(); // if present consume the alert alert.accept(); } catch (NoAlertPresentException ex) { // Alert not present ex.printStackTrace(); } }
Lot of Ajax processing
In an app involving lot of Ajax processing e.g. a GWT app, it's important to wait for the RPC call to finish. In such cases, an implicit timeout between action steps is required.driver.manage().timeouts().implicitlyWait(1, TimeUnit.MINUTES);
Comments
Post a Comment