javaselenium-webdrivertesting

How to avoid "StaleElementReferenceException" in Selenium?


I am implementing a lot of Selenium tests using Java - sometimes, my tests fail due to a StaleElementReferenceException.

Could you suggest some approaches to making the tests more stable?


Solution

  • This can happen if a DOM operation happening on the page is temporarily causing the element to be inaccessible. To allow for those cases, you can try to access the element several times in a loop before finally throwing an exception.

    Try this excellent solution from darrelgrainger.blogspot.com:

    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;
    }