explaingit

seleniumhq/selenium

📈 Trending34,082JavaAudience · developerComplexity · 3/5ActiveLicenseSetup · easy

TLDR

Open-source framework for automating web browsers across Chrome, Firefox, Safari, and Edge. Write tests once, run them thousands of times to verify web apps work correctly.

Mindmap

mindmap
  root((Selenium))
    What it does
      Control browsers
      Automate testing
      Scrape JavaScript sites
    How it works
      WebDriver protocol
      Browser drivers
      W3C standard
    Languages supported
      Java
      Python
      JavaScript
      Ruby
      C#
      Kotlin
    Key features
      Cross-browser testing
      Selenium Grid
      Parallel execution
    Use cases
      Web app testing
      Content scraping
      Task automation

Things people build with this

USE CASE 1

Write automated tests that verify a web application works correctly across multiple browsers without manual clicking.

USE CASE 2

Scrape web content that requires JavaScript to load, since Selenium controls a real browser.

USE CASE 3

Automate repetitive browser tasks like form filling, data entry, or account management at scale.

USE CASE 4

Run thousands of tests in parallel across different machines and browser versions using Selenium Grid.

Tech stack

JavaPythonJavaScriptRubyC#KotlinWebDriverW3C

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose, including commercial use, as long as you follow the Apache 2.0 license terms.

In plain English

Selenium is the most widely used open-source framework for automating web browsers. Its core purpose is to let developers write code that controls a browser the same way a human would, clicking buttons, filling in forms, navigating between pages, reading text from the screen, all without any manual interaction. This makes it invaluable for automated testing: you write a test once and can run it thousands of times against Chrome, Firefox, Safari, and Edge to verify your web application behaves correctly. At the heart of Selenium is WebDriver, a standardized protocol (formally defined by the W3C, the same body that defines HTML and CSS) that every major browser now implements natively. Your test code sends instructions to a WebDriver-compliant browser driver, which translates them into real browser actions. Because WebDriver is a web standard, the same test code works across different browsers without modification, just point it at a different driver. Selenium supports writing tests in multiple programming languages: Java, Python, JavaScript, Ruby, C#, and Kotlin all have official bindings. You pick your language, import the library, and write code like "open this URL," "find the button with this label," "click it," "wait for the page to load," "check the title matches." Beyond plain WebDriver, the project also includes Selenium Grid, which lets you run tests in parallel across many machines and browser configurations simultaneously, dramatically speeding up test suites for large applications. You would use Selenium when you need to test a web application automatically across browsers, scrape web content that requires JavaScript execution, or automate repetitive browser-based tasks. The framework is built primarily in Java for its core infrastructure, with the browser-specific drivers handled by each browser vendor. It is mature, widely supported, and the foundation that many higher-level testing tools are built on top of.

Copy-paste prompts

Prompt 1
Show me how to write a Selenium test in Python that opens a website, finds a button by its label, clicks it, and checks the page title.
Prompt 2
How do I set up Selenium Grid to run the same test across Chrome, Firefox, and Safari simultaneously?
Prompt 3
Write a Selenium script that logs into a web app, navigates to a form, fills in fields, and submits it.
Prompt 4
How do I wait for a dynamically loaded element to appear on the page before interacting with it in Selenium?
Prompt 5
Show me how to switch between Selenium drivers (Chrome to Firefox) without changing my test code.
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.