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.
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementsByClassName(''ElementLocator'').click();");
Or using an element reference:
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:
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):
WebElement input = driver.findElement(By.id("hiddenInput"));
js.executeScript("arguments[0].value=''my value'';", input);
When does an element become hidden?
- ✓CSS:
display: noneorvisibility: 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.
