Selenium (software)
Selenium je nástroj pro automatické testování webových aplikací, skládající se z několika navzájem se doplňujících komponent: Selenium IDE, Selenium RC, Selenium WebDriver a Selenium Grid. Vyvinut je v programovacím jazyku Java a je ho možné používat na různých platformách.
Aktuální verze | 2.48.2 (2015) |
---|---|
Operační systém | Multiplatformní |
Vyvíjeno v | Java |
Typ softwaru | Testování software |
Licence | Apache 2.0 License |
Web | http://www.seleniumhq.org |
Některá data mohou pocházet z datové položky. |
Selenium IDE
Původní komponenta dostupná jako plugin do internetového prohlížeče Mozilla Firefox. Jedná se o nejjednodušší způsob, jak se Seleniem vytvořit automatické testy, neboť ty se nahrávají obdobně jako např. makra v kancelářském balíku Microsoft Office. Instalace probíhá stejně jako u všech ostatních doplňků u tohoto prohlížeče. Pro uložení příkazu využívá Selenium IDE sadu pokynů (nazývaných Selenese). [1] Tyto pokyny jsou uloženy ve formě řádků HTML tabulek, kdy každý řádek má tři buňky:
- Specifikace příkazu
- Argument
- Argument
Jednoduchý test může tedy vypadat následovně:
- Otevři stránky www.google.com
- Napiš heslo: "Wikipedia" do elementu s id "gbqfq"
- Počkej až se zobrazí výsledky vyhledávání pro heslo "Wikipedia" (příkaz: waitForElementPresent)
- Klikni na odkaz s textem: "Wikipedie, otevřená encyklopedie" a počkej, než se stránka načte
Takto vypadá uložený test ve své pravé podobě (napravo ukázka zaznamenaného testu v Selenium IDE):
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">selenium_wiki</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>http://www.google.cz</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=gbqfq</td>
<td>Wikipedia</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Wikipedie, otevřená encyklopedie</td>
<td></td>
</tr>
</tbody></table>
</body>
Nevýhodou tohoto nástroje je, že automatické testy lze spouštět pouze v jediném prohlížeči - Mozilla Firefox. Tento nedostatek odstraňují pokročilejší nástroje, jako například Selenium RC.
Selenium RC
Selenium RC je nástroj umožňující vytváření automatických testů ve velké škále programovacích jazyků. Základním stavebním kamenem Selenium RC je server, který představuje proxy server pro instance internetového prohlížeče, které sám spouští a vypíná. Pro každý z podporovaných jazyků je připravena knihovna funkcí. Oproti Selenium IDE má několik výhod:
- Možnost spouštět testy na více prohlížečích, než jen na Mozilla Firefox
- Výhody skutečného programovacího jazyka
Selenium server
Jádro Selenium RC. Překládá příkazy z testu, posílá je prostřednictvím JavaScript injection a jejich výsledek dává k dispozici zpět testovému programu. Příkazy jsou z programu získávány přes GET a POST dotazovací metody jazyka HTML.
Knihovny (API)
Aby mohl testovací program využívat příkazy v jazyce Selenese, musí nejprve obsáhnout danou API. Pro Selenium je připravena sada knihoven. V následujícím odstavci se podíváme na použití těchto knihoven na příkladu testu programovaného v jazyce C# a Java.
Ukázka testu v C#
Tento test využívá testovací framework NUnit a vykonává tu samou činnost, jako předchozí ukázka u Selenium IDE, tudíž hledá heslo Wikipedia na vyhledávači Google.
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using Selenium;
namespace SeleniumTests
{
[TestFixture]
public class NewTest
{
private ISelenium selenium;
private StringBuilder verificationErrors;
[SetUp]
public void SetupTest()
{
selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.com/");
selenium.Start();
verificationErrors = new StringBuilder();
}
[TearDown]
public void TeardownTest()
{
try
{
selenium.Stop();
}
catch (Exception)
{
// Pokud se nepodaří zavřít prohlížeč, ignoruj chyby
}
Assert.AreEqual("", verificationErrors.ToString());
}
[Test]
public void TheNewTest()
{
selenium.Open("http://www.google.com");
selenium.Type("id=gbqfq", "Wikipedia");
selenium.Click("link=Wikipedie, otevřená encyklopedie");
}
}
}
Ukázka testu v Javě
V programovacím jazyce Java je situace obdobná, využívá se zde framework JUnit.
package com.example.tests;
import com.thoughtworks.selenium.*;
public class NewTest extends SeleneseTestCase {
public void setUp() throws Exception {
setUp("http://www.google.com/", "*firefox");
}
public void testNew() throws Exception {
selenium.Open("http://www.google.com");
selenium.Type("id=gbqfq", "Wikipedia");
selenium.Click("link=Wikipedie, otevřená encyklopedie");
}
}
Mezi další podporované programovací jazyky patří Ruby a Python.
Selenium WebDriver
Dostupný od verze 2.0 nabízí WebDriver jednodušší přístup k vytváření testů, než byli uživatelé zvyklí v Selenium RC[2] - není například nutné používat Selenium server ke spouštění testů, WebDriver volá každý prohlížeč sám o sobě. Nicméně kvůli této funkcionalitě je nezbytné WebDriver upravovat pro každý prohlížeč separátně. [3] Jak je vidět na následující ukázce testu v C#, je nezbytné ještě před začátkem samotného testu specifikovat, v jakém prohlížeči bude test probíhat, a jaká verze WebDriveru by tedy měla být nainstancovaná.
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;
class selenium_wiki
{
static void Main(string[] args)
{
IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl("http://www.google.com/");
IWebElement query = driver.FindElement(By.Name("gbqfq"));
query.SendKeys("Wikipedia");
query.Submit();
}
}
Nejjednodušší implementaci webového prohlížeče představuje HtmlUnit Driver, javovská verze internetového prohlížeče bez GUI. Ostatní WebDriver verze Internetových prohlížečů jsou sice pomalejší, než HtmlUnit Driver, poskytují však lepší představu o fungování testované aplikace v jednotlivých prostředích. Jedná se například o Mozilla Firefox Driver a Internet Explorer Driver.
Selenium Grid
Selenium Grid umožňuje spouštět testy na několika strojích a prohlížečích současně. Čas potřebný k vykonání všech testů je tedy oproti samotným komponentám kratší.
Reference
- Archivovaná kopie. seleniumhq.org [online]. [cit. 2012-11-16]. Dostupné v archivu pořízeném dne 2012-11-20.
- Archivovaná kopie. marlenacompton.com [online]. [cit. 2012-11-17]. Dostupné v archivu pořízeném dne 2013-02-07.
- http://jsfcorner.blogspot.cz/2011/05/browser-compatibility-with-webdriver.html