Automate any browser, from any language.

Selenium is a browser automation tool that gives you full control over Chrome, Firefox, Edge and Safari. Write your scripts in Java, Python, C#, Ruby, JavaScript or Kotlin using the official W3C WebDriver standard.

Works out of the box: Selenium downloads what it needs to talk to your browser, so there is nothing to install by hand.

Install Selenium and run your first script

Add the Selenium package for your language, then run the script below. It opens Chrome, loads a page and closes the browser again.

Add org.seleniumhq.selenium:selenium-java to your build, then run:

package dev.selenium.hello;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class HelloSelenium {
    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();

        driver.get("https://selenium.dev");

        driver.quit();
    }
}

Install the package:

pip install selenium

Then run:

from selenium import webdriver


driver = webdriver.Chrome()

driver.get("http://selenium.dev")

driver.quit()

Install the package:

dotnet add package Selenium.WebDriver

Then run:

using OpenQA.Selenium.Chrome;

namespace SeleniumDocs.Hello;

public static class HelloSelenium
{
    public static void Main()
    {
        var driver = new ChromeDriver();
            
        driver.Navigate().GoToUrl("https://selenium.dev");
            
        driver.Quit();
    }
}

Install the gem:

gem install selenium-webdriver

Then run:

# frozen_string_literal: true

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :chrome

driver.get 'https://selenium.dev'

driver.quit

Install the package:

npm install selenium-webdriver

Then run:

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

(async function helloSelenium() {
  let driver = await new Builder().forBrowser(Browser.CHROME).build();

  await driver.get('https://selenium.dev');

  await driver.quit();
})();

Kotlin uses the Java bindings. Add org.seleniumhq.selenium:selenium-java to your build, then run:

package dev.selenium.hello

import org.openqa.selenium.chrome.ChromeDriver

fun main() {
    val driver = ChromeDriver()

    driver.get("https://selenium.dev")

    driver.quit()
}

Need more detail? Follow the Getting Started guide.

Pick your tool

Selenium WebDriver

Use this when you want to drive a browser from code in your own language. WebDriver is a collection of language-specific bindings that control a real browser the way a user would, and it is the foundation for everything else Selenium does.

Selenium Grid

Use this when you need to run your WebDriver tests on several machines, browsers and operating systems at once. Grid distributes sessions from a central point so you can run against a vast combination of environments in parallel.

Development Partners

Selenium Level Sponsors

News

Selenium 4.51 Released!

Friday, October 09, 2026

By Diego Molina @diemol

Today we’re happy to announce that Selenium 4.51 has been released!

Read More

Selenium 4.50 Released!

Wednesday, September 30, 2026

By Diego Molina @diemol

Today we’re happy to announce that Selenium 4.50 has been released!

Read More

Your Agent Learned Selenium From My Old Blog Posts

Tuesday, September 29, 2026

By David Burns @automatedtester

A lot of Selenium code is now written by coding agents, and it is wrong in the same handful of ways every time. We have added a documentation page on how to fix that.

Read More

Support the Selenium Project

Learn more or view the full list of sponsors.

Donate to Selenium

through Open Collective