How can I troubleshoot and resolve the issue of “ElementNotInteractableException

141    Asked by Deepabhawana in QA Testing , Asked on May 23, 2024

I am currently engaged in a particular task that is related to automating a web application by using Java and Selenium. When I was writing my test scripts, I encountered the “ElementNotInteractableException”. Describe the steps for me of how can I handle this exception and ensure that my automation script continues to run smoothly. 

Answered by Daniel BAKER

In the context of selenium, here is the approach given:-

Wait for the element to be interactable

You can use the explicit wait to wait for the element to become clickable or interactable before the process of performing actions on it.

Scroll into view

If the element is not clickable just because if it is not in the viewport, then you can scroll down it Into the view by using the JavaScript executor.

Checking the element visibility

You should try to ensure that the element should be visible before interacting with it to avoid “ElementElementNotInteractableException”.

Try catch block

You can wrap your code in a try-catch block for catching and handling this particular issue.

Here is a detailed extension example given in the Java programming language for handling this particular issue in selenium automation. This code would include comments explaining each step and provide a comprehensive approach for handling this exception:-

Import org.openqa.selenium.By;
Import org.openqa.selenium.ElementNotInteractableException;
Import org.openqa.selenium.JavascriptExecutor;
Import org.openqa.selenium.WebDriver;
Import org.openqa.selenium.WebElement;
Import org.openqa.selenium.chrome.ChromeDriver;
Import org.openqa.selenium.support.ui.ExpectedConditions;
Import org.openqa.selenium.support.ui.WebDriverWait;
Public class HandleElementNotInteractableException {
    Public static void main(String[] args) {
        // Set up WebDriver (Assuming ChromeDriver for this example)
        System.setProperty(“webdriver.chrome.driver”, “path_to_chromedriver”);
        WebDriver driver = new ChromeDriver();
        Try {
            // Navigate to the web page
            Driver.get(https://www.example.com);
            // Wait for the element to be clickable
            WebDriverWait wait = new WebDriverWait(driver, 10);
            WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(“elementId”)));
            // Scroll the element into view if needed
            JavascriptExecutor executor = (JavascriptExecutor) driver;
            Executor.executeScript(“arguments[0].scrollIntoView(true);”, element);
            // Check if the element is displayed before interacting
            If(element.isDisplayed()) {
                Element.click();
                System.out.println(“Clicked on the element successfully.”);
            } else {
                System.out.println(“Element is not displayed.”);
                // Handle visibility issue
            }
        } catch (ElementNotInteractableException e) {
            System.out.println(“Element is not interactable.”);
            // Handle the exception (e.g., log, retry, or take alternative actions)
        } finally {
            // Quit the WebDriver
            Driver.quit();
        }
    }
}


Your Answer

Interviews

Parent Categories