• What is Automation Testing - Advantages & Types of Tools
  • What is Selenium IDE, Selenium RC, Selenium WebDriver, Selenium Grid?
  • Selenium IDE, Firebug & Firepath Installation


  • Selenium WebDriver Architecture
  • Selenium Installation
  • Challenges and Limitations of Selenium
  • First Selenium WebDriver Script
  • Working with Firefox Browser
  • Solution - Failed To Launch Browser Using Selenium WebDriver
  • Working with Chrome Browser
  • Working with IE Browser
  • Difference Between FindElement & FindElements
  • Install Firebug, Fire path and other add on for Selenium
  • Locators in Selenium
  • Dynamic Xpath
  • Dynamic CSS
  • Handle drop-downs
  • How to work with file upload
  • Handle Alerts & Popups
  • Handle Multiple Windows
  • Mouse Hover event in Selenium
  • Right Click
  • Double Click
  • Drag and Drop
  • Capture Screenshots in Selenium
  • Parameterization
  • Synchronization
  • Implicit Wait, Explicit Wait and Fluent Wait in Selenium
  • Implicit Waits
  • Explicit WebDriver Waits
  • Fluent Wait In Selenium
  • Apache POI
  • How To Read Data From Excel File
  • How To Write Data In Excel File
  • Database Testing Using MSSQL
  • Database Testing Using MySQL
  • Database Testing Using DB2
  • Handle Ajax Call in Selenium
  • Listeners in Selenium
  • Handling JavaScript in Selenium
  • Stale Element Reference Exception in Selenium
  • Integrate Sikuli with Selenium
  • Headless Browser Testing 
  • Headless Browser Testing using HtmlUnitDriver
  • Headless Browser Testing using PhanthomJSDriver


  • TestNG Installation
  • TestNG Complete Tutorial


  • Extent Reports Introduction
  • Extent Reports Generation
  • Capturing Screenshots & Including In Extent Reports
  • Extent Reports Version 4


  • ANT Build Tool - How To Download & Install
  • Maven Build Tool - How To Download & Install
  • Creating Maven Selenium Project
  • GIT Integration with Selenium
  • Jenkins - How To Download & Install
  • Jenkins - Executing TestNG Scripts
  • Jenkins - Generating Reports After Test Execution
  • Jenkins - Executing Maven Project
  • Create build and Execute build for nightly execution
  • Send Email report based on build Status
  • Selenium Continuous Integration with Jenkins [Selenium – Maven – Git – Jenkins] – Step By Step Guide


  • Running Selenium Tests On BrowserStack
  • Kobiton - Mobile Testing Platform with Real Devices


  • Mobile Testing Platform with Real Devices


  • What is Framework & Types of Framework
  • Page Object Model Design Pattern
  • Data Driven Framework
  • How to explain Test Automation Framework or Selenium Automation Framework Architecture In Interview

  • API Testing:

  • Learn API Testing
  • Postman Tutorial (API Testing with Postman)


  • Test Automation Framework Interview Questions
  • Selenium Interview Questions
  • TestNG Interview Questions
  • Java Interview Questions
  • Python Interview Questions
  • API Testing Interview Questions


  • Automation Tester Resume
  • Stale Element Reference Exception in Selenium Webdriver

    Stale Element Reference Exception in Selenium Webdriver

    In this Selenium Tutorial series, our next post is on the causes of Stale Element Reference Exception and how to overcome StaleElementReferenceException in Selenium WebDriver.

    What is StaleElementReferenceException:

    Stale means old, decayed, no longer fresh. Stale Element means an old element or no longer available element. Assume there is an element that is found on a web page referenced as a WebElement in WebDriver. If the DOM changes then the WebElement goes stale. If we try to interact with an element which is staled then the StaleElementReferenceException is thrown.

    TestNG Exceptions

    stale element reference exception

    Causes of Stale Element Reference Exception:

    A stale element reference exception is thrown in one of two cases, the first being more common than the second.

    The two reasons for Stale Element Reference are

    • The element has been deleted entirely.
    • The element is no longer attached to the DOM.

    We face this stale element reference exception when the element we are interacting is destroyed and then recreated again. When this happens the reference of the element in the DOM becomes stale. Hence we are not able to get the reference to the element.

    How To Overcome Stale Element Reference Exception in Selenium:

    Here, I will show you some ways to overcome StaleElementReferenceException. You could also refer the official Selenium post

    Solution 1:

    You could refresh the page and try again for the same element.

    Assume you are trying to click on a link and getting the stale element exception.

    Sample code to overcome the issue

    Solution 2:

    If an element is not attached to DOM then you could try using ‘try-catch block’ within ‘for loop’

    Solution 3:

    Wait for the element till it gets available

    Use ExpectedConditions.refreshed to avoid StaleElementReferenceException and retrieve the element again. This method updates the element by redrawing it and we can access the referenced element.

    Solution 4:

    We can handle Stale Element Reference Exception by using POM.

    Must Read: Page Object Model Design Pattern

    We could avoid StaleElementException using POM. In POM, we use initElements() method which loads the element but it won’t initialize elements. initElements() takes latest address. It initializes during run time when we try to perform any action on an element. This process is also known as Lazy Initialization.

    If you find any other solution to overcome StaleElementException, you could post your solution in the comments section below.

    Related Posts:

    stale element reference exception

    Get our latest blog posts delivered to your inbox

    Subscribe and get popular blog posts about software testing industry.


    3 thoughts on “Stale Element Reference Exception in Selenium Webdriver”

    1. Rajkumar
      Solution 1 helped me. Thanks a lot.

    2. I fixed it by adding a wait of a few seconds before finding the element.

    3. How about:

      new WebDriverWait(driver, timeout)
      .until((WebDriver d) -> {
      return true;

    Leave a Comment

    Share via
    Copy link
    Powered by Social Snap