Selenium 2 (WebDriver) pretstavlja jedno od rešenja za automatsko testiranje web aplikacija. Ima jednostavan API koji se brzo i lako uči, svakako lakše nego Selenium-RC (1.0) API, što naravno čini testove lakšim za razumevanje i održavanje. Ne zavisi ni od jednog test framework-a tako da se može se koristiti uz bilo koji unit testing framework (NUnit, xUnit, MSTest itd.).
Kako to zapravo radi
Kada se jednom doda u test projekat, WebDriver se koristi kao i bilo koja druga biblioteka i za razliku od Selenium RC nisu potrebne nikakve dodatne instalacije ili startovanje dodatnih procesa. WebDriver radi tako što direktno komunicira sa internet pretraživačem koristeći podršku za automatizaciju koja je ugrađena u sam internet pretraživač (da dobro ste pročitali današnji pretraživači imaju ugrađenu podršku za automatizaciju).
Za razliku od WebDriver-a, Selenium-RC se oslanjao na Selenium Server koji je ubacivao javascript u internet pretraživač kako bi ga automatizovao. Dakle, testovi su bili pisani u nekoj klijentskoj Selenium biblioteci, a zatim su se te komande prevodile u javascript. Na svu sreću, od kad su se proizvođači internet pretraživača uključili u celu priču, stvari su postale dosta jednostavnije.
Kako početi
Preko NuGet servisa može se brzo i jednostavno skinuti najnovija verzija WebDriver biblioteke. Pored osnovne biblioteke preko NuGet servisa može da se skine i Support biblioteka, o kojoj ću nekom drugom prilikom više pisati.
Ovo vam je dovoljno da možete da počnete da pišete auto testove za FireFox i InternetExplorer. Za Chrome vam treba driver koji može ovde da se skine.
Primer
U ovom primeru se koristi MSTest kao testni framework, ali naravno može se koristiti i bilo koji drugi. Nadam se da ćete posle ovog primera uvideti kako je jednostavno pisati auto testove pomoću Selenium WebDriver biblioteke.
using OpenQA.Selenium.Firefox; using OpenQA.Selenium; [TestClass] public class GoogleTest { [TestMethod] public void Test1() { IWebDriver driver = new FirefoxDriver(); driver.Navigate().GoToUrl("http://www.google.com/"); IWebElement query = driver.FindElement(By.Name("q")); query.SendKeys("Ivan Franjic .Net"); IWebElement resultLink = driver.FindElement(By.PartialLinkText("ivanfranjic.net")); resultLink.Click(); Assert.IsTrue(driver.Title.Contains("Ivan Franjic Blog"), "Ooops, wrong blog opened."); driver.Quit(); } }
Toliko za sad, vidimo se uskoro :)