</>

Technology

Selenium

Difficulty

Intermediate

Interview Question

How to click on an element which is not visible using Selenium WebDriver?

Use JavascriptExecutor to click elements that are hidden, off-screen, or not interactable through normal WebDriver click.

Answer

Clicking an Invisible Element Using JavascriptExecutor

When an element is not visible or interactable via normal click(), use JavascriptExecutor to click it directly via JavaScript.

Basic approach:

Java
WebElement element = driver.findElement(By.id("gbqfd"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);

Full example:

Java
@Test
public void clickHiddenElement() {
    driver.get("https://example.com");

    // Find the element (even if hidden)
    WebElement hiddenBtn = driver.findElement(By.id("hiddenButton"));

    // Click via JavaScript
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("arguments[0].click();", hiddenBtn);

    // Verify action was taken
    Assert.assertEquals(driver.getTitle(), "Result Page");
}

Make element visible first, then click:

Java
WebElement element = driver.findElement(By.id("hiddenElement"));
JavascriptExecutor js = (JavascriptExecutor) driver;

// Make visible via JS
js.executeScript("arguments[0].style.display='block';", element);
js.executeScript("arguments[0].style.visibility='visible';", element);
js.executeScript("arguments[0].removeAttribute('hidden');", element);

// Now click normally or via JS
element.click();

Scroll into view then click:

Java
WebElement element = driver.findElement(By.id("offScreenElement"));
JavascriptExecutor js = (JavascriptExecutor) driver;

// Scroll element into viewport
js.executeScript("arguments[0].scrollIntoView(true);", element);

// Wait for it to be clickable
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
wait.until(ExpectedConditions.elementToBeClickable(element));
element.click();

When to use JS click:

  • Element is display:none or visibility:hidden
  • Element is behind an overlay/modal
  • Element is outside the viewport
  • Element returns ElementNotInteractableException
  • Fixed banners/headers covering the element

JS click vs normal click:

AspectNormal click()JS click
Visibility requiredYesNo
Events firedmousedown, mouseup, clickclick only
Best forVisible elementsHidden/overlapping elements
ReliabilityHigherUse when normal click fails

Follow AutomateQA

Related Topics