WatiN

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

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.

Historia[edytuj | edytuj kod]

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.

Licencja[edytuj | edytuj kod]

WatiN jest udostępniony na licencji Apache License 2.0.

Główne funkcjonalności[edytuj | edytuj kod]

  • obsługuje przeglądarki w wersjach: Internet Explorer 6, 7, 8, 9 oraz Mozilla Firefox 2, 3
  • może być używany w dowolnym języku programowania .Net
  • pozwala w prosty sposób zlokalizować elementy na stronie (po wielu atrybutach elementu) oraz wykonać na nich akcje użytkownika (np. kliknięcie przycisku, wprowadzenie wartości do pola tekstowego, wybranie wartości z listy rozwijanej), przykłady (w języku C#):
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);
  • pozwala obsłużyć okna dialogowe, przykłady (w języku C#):
PrintDialogHandler printDialogHandler = new PrintDialogHandler(PrintDialogHandler.ButtonsEnum.Print);
FileDownloadHandler confirmDialogHandler = new FileDownloadHandler(FileDownloadOptionEnum.Open);
using (new UseDialogOnce(Window.DialogWatcher, confirmDialogHandler))
{
  …
}
  • łatwa integracja z narzędziem do obsługi testów jednostkowych (np. NUnit)

Narzędzia ułatwiające pracę z WatiN[edytuj | edytuj kod]

  • WebDeveloperToolbar – plugin do przeglądarki Mozilla Firefox umożliwiający m.in. szybki podgląd atrybutów elementów HTML
  • IEDeveloperToolbar – plugin do przeglądarki Internet Explorer umożliwiający m.in. szybki podgląd atrybutów elementów HTML
  • WatiNTestRecorder – narzędzie do nagrywania testów w przeglądarce, które następnie można przekonwertować na kod WatiN

Zastosowanie[edytuj | edytuj kod]

Przykład z wykorzystaniem Microsoft Visual C# 2010 Express oraz NUnit:

  • W projekcie należy dodać referencje do:
WatiN.Core.dll (do pobrania ze strony http://watin.org/)
Nunit.framework.dll (do pobrania ze strony http://www.nunit.org/)
  • W kodzie należy dodać odwołanie do namespace:
using WatiN.Core;
using Nunit.Framework;
WatiN.Core pozwala na interakcje z instancją okna przeglądarki, a Nunit.Framework służy do uruchamiania testów. Do obsługi dialogów należy także dodać odwołanie do WatiN.Core.DialogHandlers.

Konstrukcja metody testowej[edytuj | edytuj kod]

[Test]
public void SearchForWatiNOnGoogle()
{
  using (var browser = new IE("http://www.google.com"))
  {
    browser.TextField(Find.ByName("q")).TypeText("WatiN");
    browser.Button(Find.ByName("btnG")).Click();
    Assert.IsTrue(browser.ContainsText("WatiN"));
  }
}

Opis elementów testu[edytuj | edytuj kod]

using (var browser = new IE("http://www.google.com"))
Test uruchamia stronę www.google.com w przeglądarce IE.
browser.TextField(Find.ByName("q")).TypeText("WatiN");
W wyszukiwarkę wpisano wartość 'WatiN' : pole tekstowe zostało znalezione za pomocą funkcji Find.ByName, a następnie symulując ręczne wpisywanie została wprowadzona wartość 'WatiN'.
Jeśli nie zależy nam na powolnym wpisywaniu tekstu w pole, można w zastępstwie użyć funkcji: browser.TextField(Find.ByName("q")).Value = "WatiN";
browser.Button(Find.ByName("btnG")).Click();
Uruchomiono wyszukiwanie: przycisk o nazwie 'btnG' został znaleziony, wykonano na nim akcję Click().
Assert.IsTrue(browser.ContainsText("WatiN"));
Sprawdzenie, czy w przeglądarce zawarty jest tekst 'WatiN'. Zwrócona wartość True powoduje pomyślne zakończenie testu (Nunit daje możliwość używania różnych asercji).

Bibliografia[edytuj | edytuj kod]

http://watin.org/