Selenium je nástrojem, který se používá na tvorbu automatických testů webových aplikací, který se skládá z několika komponent, které se navzájem doplňují. Tyto komponenty jsou Selenium IDE, Selenium RC, Selenium WebDriver a Selenium Grid. Byl vyvinut v programovacím jazyce Java a je možné jej použít na testování různých programovacích jazyků, včetně C#, Groovy, Java, Perl, PHP, Python, Ruby nebo Scala.
Testy mohou být spouštěny na většině moderních prohlížečů. Selenium je možné deployovat na Windows, Linuxu i MacOS platformách. Jedná se o open-source software, který je uvolněn pod Apache 2.0 licencí, weboví vývojáři si jej tak mohou stáhnout a používat, aniž by museli platit.
Selenium původně vyvinul Jason Huggins v roce 2004 jako interní nástroj ve firmě ThoughtWorks. Následně se k vývoji přidali další a začali pracovat na Selenium Remote Control, tedy RC. Postupně se začal projekt větvit a došlo na jeho současnou podobu.
Selenium se skládá z několika komponent, z nichž každá má svojí specifickou roli ve vývoji automatizovaných testů pro webové aplikace.
Selenium IDE je kompletní integrované vývojové prostředí pro testy. Jedná se o add-on do prohlížeče Firefox a nedávno byl přidán i do Chrome Store. Umožňuje nahrávání, editaci a opravy testů v jazyce Selenese. Původně existovalo pod názvem Selenium Recorder. Skripty lze pomocí IDE automaticky nahrávat a manuálně editovat s podporou automatického doplnění a možností rychle jednotlivé části přesouvat.
Jako alternativu k psaní testů v Selenese je možné psát testy v různých konvenčních programovacích jazycích. Tyto testy pak komunikují se Seleniem za pomoci volaní metod v Selenium Klient API. Selenium má v současnosti dostupná API pro jazyky Java, C#, Ruby, JavaScript a Python. S novou verzí Selenia byla představena nová varianta klientského API, ale původní API je stále podporováno.
Selenium WebDriver je následníkem Selenium RC. Akceptuje příkazy zaslané v Selenese nebo skrze klientské API a posílá je do prohlížeče. To je implementováno skrze drivery určené pro konkrétní prohlížeče, které zasílají příkazy prohlížeči a následně získávají výsledky.
Selenium Remote Control je server, který je psaný v Javě a přijímá příkazy prohlížeče skrze http. RC umožňuje psaní automatizovaných testů pro webové aplikace v libovolném programovacím jazyce, což umožňuje snadnější integraci Selenia do existujících frameworků pro jednotkové testy. Drivery jsou dostupné pro následující programovací jazyky: PHP, Python, Ruby, .NET, Perl a Java.
Selenium Grid je server, který umožňuje testům, aby používaly instance prohlížeče, které běží na vzdálených strojích. Jeden server tak funguje jako hub. Testy kontaktují hub, aby získaly přístup k instancím webových prohlížečů. Hub má seznam serverů, které zpřístupňují instance prohlížeče, a umožňuje testům tyto instance používat. Umožňuje zároveň spuštění testů paralelně na více strojích a zároveň centrálně spravovat různé verze prohlížečů a jejich konfigurací.
To usnadňuje rozdělení zátěže mezi různé stroje a zároveň umožňuje spouštět testy, které běží na různých platformách nebo operačních systémech.