ElementNotInteractableException in Selenium
Updated 2026-11-13 · 2 min read
Lookup succeeded, but the node cannot accept the requested action. Check the actual control, visible form and prerequisite workflow before changing waits.
Recognise the error
The official Java API names this exception:
org.openqa.selenium.ElementNotInteractableException
This is the documented exception identifier, not a reproduced stack trace. Driver-specific wording and diagnostic details vary. Keep the full message from your own run; no browser error was reproduced for this page. Java fragments below assume an existing Selenium 4 WebDriver driver and standard Selenium imports. They were checked against the APIs but not compiled or run here.
Selenium found a node, but it cannot interact with that node in its current state. For example, an OTP form may keep a hidden input template beside the visible input.
The WebDriver specification defines the corresponding protocol error string as:
element not interactable
1. The locator targets a wrapper or hidden duplicate
Inspect the matched tag and attributes. Send keys to the actual input, not its label, container or hidden template.
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement otp = wait.until(ExpectedConditions.visibilityOfElementLocated(
By.cssSelector("#active-otp input[name='otp']")));
otp.sendKeys("123456"); // dummy OTP for a test fixture only
A visibility wait does not make an input editable. Check readonly and the workflow before typing.
2. A preceding step has not enabled the control
If selecting a delivery address enables Continue, perform that step and wait for the resulting state.
wait.until(ExpectedConditions.elementToBeClickable(By.id("saved-address"))).click();
wait.until(ExpectedConditions.elementToBeClickable(By.id("continue"))).click();
Do not remove disabled or readonly using JavaScript. If the required action never enables the control, capture that as an application failure.
3. The control is inside a collapsed section
Open the section through the UI and then wait for the real field. Scrolling alone cannot expand a closed accordion.
wait.until(ExpectedConditions.elementToBeClickable(By.id("edit-address"))).click();
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("postcode")))
.sendKeys("110001");
Prevention and interview answer
Give active forms stable locators, avoid matching hidden templates, and make readiness part of the page object's action method. A useful interview answer is: “Lookup succeeded, so I checked the matched tag, visibility and enabled state, then completed the prerequisite UI step.”
When a different element receives the click, investigate click interception. When lookup itself fails, see NoSuchElementException.
Quick answers
How is this different from NoSuchElementException?
Lookup succeeded here; the element cannot accept the requested interaction in its current state.
Will a presence wait solve it?
Presence only proves that a node exists. Wait for visibility and the state required by the action.
Sources
Want a project you can show in interviews?
The portfolio project kit walks you through testing a deliberately buggy app with Selenium or Playwright and API tests, then explaining it. The app itself is free.
