JavascriptExecutor is an interface in Selenium WebDriver that allows executing JavaScript code within the browser context.
Cast the driver:
Java
JavascriptExecutor js = (JavascriptExecutor) driver;
Common use cases:
Click hidden element:
Java
WebElement btn = driver.findElement(By.id("hiddenBtn"));
js.executeScript("arguments[0].click();", btn);
Scroll to element:
Java
WebElement el = driver.findElement(By.id("footer"));
js.executeScript("arguments[0].scrollIntoView(true);", el);
Scroll to bottom of page:
Java
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
Set input field value (bypasses readonly):
Java
js.executeScript("arguments[0].value=''test@email.com'';", emailField);
Get page title:
Java
String title = (String) js.executeScript("return document.title;");
Highlight element for debugging:
Java
js.executeScript("arguments[0].style.border=''3px solid red'';", element);
When to use JavascriptExecutor:
- ✓Element is not interactable via normal Selenium methods
- ✓Need to scroll to a specific position
- ✓Setting readonly or disabled field values
- ✓Triggering custom JS events
