This episode explores the history and background of Selenium's birth, its evolution from Selenium RC to Selenium 4 with the W3C standard, its advantages over Cypress, Playwright, and Puppeteer, as well as real use cases that make it the top choice for web test automation.

Episode 0 ensured your environment is ready. Now it's time to understand why Selenium exists. Episode 1 answers three big questions: where Selenium came from, what advantages it brings, and why you — as an engineer building web test automation — choose it over other modern tools.
Many people start using Selenium because of tutorials, yet understanding its background is far more valuable. By knowing Selenium's history and its position in the ecosystem, you'll find it easier to decide when to use Selenium, when to use alternatives, and how to position it within your team's testing architecture.
By the end of this episode, you'll also see a timeline table of Selenium versions and a guide on when you should not use Selenium. Both are considerations that beginner practitioners often overlook.
Selenium was created by Jason Huggins at ThoughtWorks in 2004. At the time, he built a tool called JavaScriptTestRunner to test web applications automatically, which was later renamed Selenium Remote Control (RC). The uniqueness of Selenium RC: it ran JavaScript inside the browser page to simulate user actions.
This JavaScript-based approach had limitations: browsers restricted scripts inside a sandbox, so many real browser actions could not be simulated. This problem gave birth to the next generation.
In 2006, Simon Stewart developed WebDriver at ThoughtWorks with a different approach: instead of injecting JavaScript, WebDriver talked directly to the browser through a more native mechanism. In 2008, the Selenium and WebDriver projects merged, giving birth to Selenium 2.0 in 2011.
Selenium 3 (2016) marked the retirement of Selenium RC and a full focus on WebDriver, while also starting the W3C standardization process. This standard made the WebDriver protocol a public specification adopted by all major browsers.
Selenium 4 (2021) brought a huge leap: full implementation of the W3C WebDriver standard without additional modules, relative locators, a completely overhauled Grid with a session map, and since version 4.6, Selenium Manager which downloads drivers automatically. As of 2026, Selenium 4.x is the stable release with the largest community ecosystem in the world of browser automation.
For easy recall, here's a concise timeline:
| Version | Year | Key highlights |
|---|---|---|
| Selenium RC | 2004 | JavaScript injection based, by Jason Huggins |
| Selenium 2 | 2011 | Merger with WebDriver from Simon Stewart |
| Selenium 3 | 2016 | Full WebDriver, start of W3C standardization |
| Selenium 4 | 2021 | Full W3C, relative locators, new Grid, Selenium Manager |
pip show selenium | grep -i versionThe command pip show selenium | grep -i version shows the installed version. Make sure it's version 4.x before following this series, because all code examples use the Selenium 4 API.
Selenium's most distinctive advantage is the combination of two dimensions no other tool has: support for many browsers (Chrome, Firefox, Edge, Safari) and many programming languages (Python, Java, C#, JavaScript, Ruby). A Java backend team and a JavaScript frontend team can both use Selenium in their own language.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
print(driver.current_url)
driver.quit()The block above is an example of driver.get(...) from the Python binding. Java bindings use WebDriverManager and ChromeDriver, while JavaScript bindings use the selenium-webdriver npm — the APIs still follow the same W3C standard.
With more than 20 years of history, Selenium has extensive documentation, a large community, integrations with almost every testing framework (pytest, JUnit, TestNG, Mocha), and the backing of the W3C standard itself. This means the skills you learn in this series apply anywhere, including when you change companies or languages.
Before choosing, it's important to see where the modern competitors stand:
| Tool | Language | Main strengths | Limitations |
|---|---|---|---|
| Selenium | Many | W3C standard, all browsers, Grid | More manual setup, limited auto-wait |
| Cypress | JavaScript | Fast, runs in the same browser | Limited to the JS ecosystem |
| Playwright | JavaScript, Python, Java | Auto-wait, CDP, codegen | Younger, fewer third-party integrations |
| Puppeteer | JavaScript | Full Chrome control via CDP | Chrome-focused, not a test runner |
A healthy mindset: Selenium for flexibility and standards, Playwright/Cypress for productivity within the JS ecosystem, and Puppeteer for low-level browser scripting. We'll discuss when to combine them in episode 22.
Tip
Don't choose a tool based on popularity alone. Write down your team's requirements — languages, browsers, budget, and application type — then match them against each tool's capabilities.
Selenium is used for three main categories of work:
open page -> fill form -> submit -> verify result -> teardownOne thing to remember: Selenium is not for every kind of testing. For pure logic validation, unit tests remain the best choice. For load testing, tools like k6 or JMeter are more appropriate. Selenium shines when what's being tested is real user behavior in a real browser.
There are situations where Selenium isn't the ideal choice. If your application is a pure JavaScript SPA and the team is fully in the Node.js ecosystem, Playwright or Cypress can offer more convenient auto-wait. If you only need to automate Chrome for scraping, Puppeteer is lighter. Selenium shines when your needs are cross-browser, cross-language, and require a stable standard.
Episode 1 gave you context: Selenium was born in 2004 as Selenium RC, merged with WebDriver to become Selenium 2, standardized itself through W3C in Selenium 3 and 4, and is now the most mature browser automation tool with cross-browser and multi-language advantages.
Key takeaways:
In episode 2 next, we'll cover core concepts and Selenium architecture — the WebDriver, browser driver, and Selenium Grid components, how Selenium controls the browser via the W3C protocol, and the setup, exercise, assert, teardown test lifecycle. This is the architectural foundation that will accompany the entire series.