Selenium
The original browser automation framework — W3C WebDriver standard.
Pricing
Free / Open source
Type
Automation
Languages
Java, Python, JavaScript, C#, Ruby, Kotlin
Community
// VERDICT
Reach for Selenium when you need the broadest language and browser support or must fit an existing WebDriver ecosystem. Skip it when a modern runner like Playwright or Cypress would give you auto-waiting and better debugging with far less setup.
Best for
Browser automation across the widest range of languages, browsers and legacy environments via the mature WebDriver standard.
Avoid when
You want fast setup, built-in auto-waiting and modern debugging out of the box.
CI/CD fit
GitHub Actions · GitLab CI · Jenkins · Azure DevOps · Selenium Grid
Languages
Java · Python · JavaScript · C# · Ruby · Kotlin
Team fit
Enterprise QA teams · Polyglot teams · Teams with existing WebDriver suites
Setup
Maintenance
Learning
Licence
// BEST FOR
- Teams needing tests in Java, Python, C#, Ruby, JavaScript or Kotlin
- The widest browser coverage, including older and enterprise-mandated browsers
- Organisations already standardised on the WebDriver ecosystem
- Distributed cross-browser runs via Selenium Grid or a device cloud
- Integrating with a large existing ecosystem of bindings and tools
- Long-lived enterprise suites where ecosystem maturity outweighs convenience
// AVOID WHEN
- You want a same-day productive setup with strong defaults
- Your team would benefit from built-in auto-waiting to cut flakiness
- You need modern debugging like trace viewers and time-travel out of the box
- A new greenfield web project where Playwright/Cypress fit better
- Small teams without capacity to maintain Grid/driver infrastructure
- You rely on intercepting network traffic as a first-class feature
// QUICK START
# Java + Maven
mvn archetype:generate -DgroupId=com.example -DartifactId=selenium-tests
# add selenium-java + your WebDriver, then:
mvn test// ALTERNATIVES TO CONSIDER
| Tool | Choose it when |
|---|---|
| Playwright | You want modern auto-waiting, tracing and cross-browser support with much lighter setup. |
| Cypress | You're a frontend team wanting an easy on-ramp and in-browser debugging. |
| WebDriverIO | You want a Node.js layer over WebDriver spanning web and mobile. |
// FEATURES
- W3C WebDriver protocol
- Selenium Grid for distributed execution
- Multi-language client bindings
- Wide browser and OS coverage
- Selenium IDE record-and-playback
// PRIMARY USE CASES
CROSS-BROWSER AUTOMATION
Drive Chrome, Firefox, Safari, and Edge through the W3C WebDriver protocol — same tests, every browser.
DISTRIBUTED EXECUTION
Run massive test suites in parallel across Selenium Grid nodes for cloud-scale CI.
LEGACY SYSTEM AUTOMATION
Hook into older browsers or specialised drivers that newer frameworks don't support.
// PROS
- Industry standard with massive community
- Multi-language support across major stacks
- Works with effectively any browser
- Mature tooling and infrastructure ecosystem
// CONS
- Slower than modern alternatives like Playwright
- Flaky without explicit waits and retries
- More verbose API
- Higher maintenance cost on large suites
// EXAMPLE QA WORKFLOW
Structure tests with the Page Object Model from the start
Use explicit waits for elements, never fixed sleeps
Manage browser drivers with a version-managed setup
Run smoke locally and on pull requests
Scale cross-browser regression via Grid or a device cloud
Capture screenshots and logs as CI artifacts on failure
// RELATED QA.CODES RESOURCES
// Practise with Selenium
Put Selenium to work on a realistic app with seeded bugs, scenarios and automation tasks.