SeleniumHQ/selenium

Developer Tools

A W3C WebDriver implementation that lets tests and scripts drive real browsers across languages.

34,566
8,729
Java
Apache-2.0
13 years old

Selenium remains the default answer when a team needs to drive a real browser from code, but it is an infrastructure decision more than a quick utility: expect to maintain browser drivers and version alignment alongside your tests.

The problem

A developer wants to confirm that a checkout flow, login redirect or JavaScript-heavy page actually works in Chrome, Firefox and Safari, not just in a mocked unit test. Doing this by hand is slow and unrepeatable; building a bespoke browser-control layer means handling each browser's debugging protocol yourself. Selenium supplies the browser-control layer through the W3C WebDriver interface, so a script opens a browser, drives it and returns results in a form a test runner can assert on. The same script can then be rerun in CI instead of being retyped by a person.

What's different

The core idea is a platform- and language-neutral WebDriver interface: your test code speaks one protocol while the browser-specific work sits behind it. The project ships bindings for Java, Python, JavaScript, Ruby, .NET and Rust, which matters when a QA script and an application are written in different languages. Because it targets the W3C standard rather than one vendor's private API, the abstraction is the point; it is also the main trade-off. You are programming against a specification, so behaviour that depends on a specific browser build or a newer automation API may need its own path rather than a single portable call.

The README here is aimed at people building or contributing to Selenium itself, and it points ordinary users to the separate user manual. That split is worth noticing: the repository is an umbrella of bindings, a grid and shared infrastructure, not just a pip-installable helper library. The benefit is that the same ecosystem covers local browser runs and distributed runs, but the cost is that the surface you must understand grows with how you deploy it.

Who should try it

Good fit: a team with an existing test suite that needs cross-browser coverage, or an organization that wants browser automation in a language already used internally and is willing to own browser and driver versions. It also suits people contributing to the project itself, where the Bazel-based build described in the README is the relevant entry point.

Poor fit: someone who wants one-off scraping or a quick script with minimal setup. The repository README covers contributor setup rather than end-user installation, and the user-facing path lives in the documentation. Likewise, a team that cannot pin browser versions in CI will spend more time on environment drift than on test logic.

Requirements and limitations

For using Selenium, start from the user manual and the support channels; the repository README is explicitly for contributors. Contributing is heavier: it requires Bazelisk, JDK 17 or newer with JAVA_HOME pointing at the JDK, and platform extras such as Xcode command-line tools on macOS or MSYS2 and Visual C++ build tools on Windows. There are escape hatches: a Gitpod environment and a dev container avoid a full local setup.

Ongoing upkeep is the real constraint. Browser binaries and drivers move independently of the bindings, so version alignment must be part of CI maintenance rather than a one-time install. On Apple Silicon, the README still documents a Rosetta build flag as a workaround, which signals that local builds can carry platform-specific friction.

A 2024 HN thread about telemetry collected from Selenium users drew criticism: one commenter argued the data collection should be opt-in (poikroequ, 2024-06-12), another disputed the GDPR-compliance framing (pyeri, 2024-06-12), and a third objected to a testing tool sending data outward (iwontberude, 2024-06-13). These are commenters' opinions from an older version, not verified current behaviour; teams in restricted networks should confirm the telemetry situation for the version they deploy.

HotRepo's take

HotRepo's only recorded signal is a weekly Java-board position of #10 with +21 stars on 2026-10-27; there is no daily-board history, so persistence and direction cannot be judged. That single snapshot is consistent with steady use but says nothing about momentum. Before adopting, verify that the telemetry behaviour and browser/driver compatibility for your pinned versions are documented for the release you will actually run.

Hacker News

If you use Selenium to scrape sites, telemetry may have been collected from you
▲ 18 · 5 comments · June 11, 2024
After Almost 3 Years Of Development, Selenium v4.0.0 Was Finally Released
▲ 4 · 1 comment · October 13, 2021

Written by AI from the project's README, updated October 27, 2026. The project's own docs are the source of truth.