WatiN (Web Application Testing in .Net) – framework dla środowiska .Net umożliwiający automatyzację działań użytkownika w przeglądarkach internetowych Internet Explorer oraz Mozilla Firefox. Powstał w oparciu o framework WatiR (Web Application Testing in Ruby). WatiN to narzędzie open source, bardzo przydatne w automatyzacji testów aplikacji webowych. Pozwala otworzyć instancję przeglądarki internetowej z testowaną aplikacją oraz wykonać na niej akcje użytkownika.
Inicjatorem i głównym programistą biblioteki WatiN był Jeroen van Menen. Prace programistyczne nad projektem rozpoczął w grudniu 2005 roku, chcąc zastąpić komercyjne testy aplikacji wykorzystywane w jego firmie. W 2007 roku do projektu przyłączył się Edward Wilde, który opracował wsparcie dla przeglądarki Mozilla Firefox oraz eksperymentalne wsparcie dla przeglądarki Chrome. Edward Wilde opracował także framework Wax, pozwalający na tworzenie automatycznych testów WatiN z wykorzystaniem Microsoft Excel.
WatiN jest udostępniony na licencji Apache License 2.0.
browser.TextField(Find.By("friendlyname", "UserName")).Value = username; browser.Button(Find.ByValue("Sign-In")).ClickNoWait(); browser.Link(Find.ByText("Logout")).Click(); browser.Link(Find.ByTitle("Quick Search")).Click(); browser.Element(Find.ByClass(new Regex(".* ui-state-active"))).Text.Contains("Tests")); browser.CheckBox(Find.ById("test")).Checked = true; browser.SelectList("test2").Select(service.test3);
PrintDialogHandler printDialogHandler = new PrintDialogHandler(PrintDialogHandler.ButtonsEnum.Print); FileDownloadHandler confirmDialogHandler = new FileDownloadHandler(FileDownloadOptionEnum.Open); using (new UseDialogOnce(Window.DialogWatcher, confirmDialogHandler)) { … }
Przykład z wykorzystaniem Microsoft Visual C# 2010 Express oraz NUnit:
[Test] public void SearchForWatiNOnGoogle() { using (var browser = new IE("https://www.google.com/")) { browser.TextField(Find.ByName("q")).TypeText("WatiN"); browser.Button(Find.ByName("btnG")).Click(); Assert.IsTrue(browser.ContainsText("WatiN")); } }
using (var browser = new IE("https://www.google.com/"))
browser.TextField(Find.ByName("q")).TypeText("WatiN");
browser.Button(Find.ByName("btnG")).Click();
Assert.IsTrue(browser.ContainsText("WatiN"));