On this page

selenium-webdriver

JavaScript language bindings for Selenium WebDriver. Selenium automates browsers for testing and web-based task automation.

Requires Node.js >= 20.

Installation

npm install selenium-webdriver

Quick Start

const { Builder, Browser } = require('selenium-webdriver')

;(async function example() {
  let driver = await new Builder().forBrowser(Browser.CHROME).build()
  try {
    await driver.get('https://www.selenium.dev')
    console.log(await driver.getTitle())
  } finally {
    await driver.quit()
  }
})()

Selenium Manager automatically handles browser driver installation — no manual driver setup required.

Configuring the Builder

The Builder sets default options for all browsers in a single chain; options for non-selected browsers are dropped at build() time. The target browser can be swapped at runtime via the SELENIUM_BROWSER environment variable.

const { Builder, Browser } = require('selenium-webdriver')
const chrome = require('selenium-webdriver/chrome')
const firefox = require('selenium-webdriver/firefox')

let driver = new Builder()
  .forBrowser(Browser.FIREFOX)
  .setChromeOptions(new chrome.Options())
  .setFirefoxOptions(new firefox.Options())
  .build()

Running Against a Remote Server

To run scripts against a Selenium Grid or standalone server, point the Builder at the server URL, or set SELENIUM_REMOTE_URL:

let driver = new Builder().forBrowser(Browser.CHROME).usingServer('http://localhost:4444').build()
SELENIUM_REMOTE_URL="http://localhost:4444" node script.js

Node Support Policy

Each selenium-webdriver release targets the latest semver-minor of Node's LTS and Current releases.

LevelGuarantee
supportedAPI compatible without runtime flags; bugs investigated and fixed.
best effortBugs investigated as time permits; API compatibility only where required.
unsupportedBug reports closed as will-not-fix; API compatibility not guaranteed.

Versions older than the active LTS, unstable release branches (e.g. v.Next), and semver-major Node releases outside the LTS / Current pair are unsupported.

Documentation

Support

Contributing

Contributions are welcome via GitHub pull requests. See the source code for this binding.

License

Licensed under the Apache License 2.0.

Selenium WebDriver JavaScript API