</>

Technology

Selenium

Difficulty

Intermediate

Interview Question

How to handle hidden elements in Selenium WebDriver?

Hidden elements cannot be clicked directly. Use JavascriptExecutor to interact with elements that have display:none or visibility:hidden.

Answer

Hidden elements (those with display:none or visibility:hidden) are present in the DOM but not visible. Selenium''s standard click() or sendKeys() throw ElementNotInteractableException on them.

Method 1: JavascriptExecutor — most common fix
Java
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementsByClassName(''ElementLocator'').click();");

Or using an element reference:

Java
WebElement hiddenBtn = driver.findElement(By.id("hiddenButton"));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", hiddenBtn);

Method 2: Make element visible via JS, then interact:

Java
WebElement el = driver.findElement(By.id("hiddenInput"));
js.executeScript("arguments[0].style.display=''block'';", el);
el.sendKeys("text value");

Method 3: Set value directly via JS (bypass the UI):

Java
WebElement input = driver.findElement(By.id("hiddenInput"));
js.executeScript("arguments[0].value=''my value'';", input);

When does an element become hidden?

  • CSS: display: none or visibility: hidden
  • HTML attribute: type="hidden"
  • Conditional rendering (shown only after user action)

Best Practice: Prefer arguments[0].click() via JS executor rather than changing element visibility, since visibility changes alter the DOM and may cause different behavior than a real user action.

Follow AutomateQA

Related Topics