WatiN–testowanie aplikacji internetowych

Dzisiaj chciałbym przedstawić framework WatiN, który służy do automatyzacji testów. Symuluje on po prostu przeglądarkę internetową (dosłownie). Za pomocą niego, możemy otworzyć IE, wejść na daną stronę czy kliknąć w jakiś przycisk. Wszystkie operacje takie jak kliknięcie w link czy nawet maksymalizacja okna są możliwe dzięki WatiN.

Docelowo używa go się w połączeniu z nUnit albo SpecFlow. Zacznijmy jednak od zwyklej aplikacji konsolowej. Załóżmy, że chcemy wejść na Google.pl, wpisać tekst i kliknąć w przycisk Search.

Najpierw oczywiście instalujemy wymagany pakiet z NuGet:

image

Następnie implementujemy kod, który wykona następujące czynności:

1. Otworzy przeglądarkę IE.

2. Przejdzie do www.google.pl

3. Naciśnie przycisk “Szukaj”, aby wyświetlić wyniki.

Kod jest następujący:

using (var browser = new IE("http://www.google.com"))
{
 browser.TextField(Find.ByName("q")).TypeText("Hello World!");
 browser.Button(Find.ByName("btnG")).Click();
}

Jeśli wywołuje on poniższy wyjątek, wtedy trzeba ustawić  “Embed Interop Types” we właściwościach na false.

Additional information: Could not load file or assembly 'Interop.SHDocVw, Version=1.1.0.0, Culture=neutral, PublicKeyToken=db7cfd3acb5ad44e' or one of its dependencies. The system cannot find the file specified.

image

Wciąż jednak kod nie będzie działać i zostanie wyrzucony kolejny wyjątek:

An unhandled exception of type 'System.Threading.ThreadStateException' occurred in WatiN.Core.dll

Additional information: The CurrentThread needs to have it's ApartmentState set to ApartmentState.STA to be able to automate Internet Explorer.

Z tego względu dodajemy wspomniany atrybut (więcej informacji tutaj) i uruchamiamy program:

[STAThread]
private static void Main(string[] args)
{
  using (var browser = new IE("http://www.google.com"))
  {
      browser.TextField(Find.ByName("q")).TypeText("Hello World!");
      browser.Button(Find.ByName("gbqfsa")).Click();

  }
}

Na ekranie pojawi się przeglądarka i automatycznie zostanie wpisany tekst:

image

Prawdziwa jednak siła WatiN jest gdy korzystamy z niego w połączeniu z nUnit. Framework dostarcza naprawdę wiele metod umożliwiających walidacje i ekstrakcje danych ze stron HTML.  Bardzo łatwo możemy sprawdzić czy dany tekst występuje i co jest dokładnie wyświetlane na ekranie. O tym jednak w kolejnej części…

One thought on “WatiN–testowanie aplikacji internetowych”

  1. Jak to się ma do selenium ? (jakieś porównanie może w kolejnych postach?)

Leave a Reply

Your email address will not be published.