Przejdź do głównej zawartości

WebDriver - 2 triki, które zaoszczędzą kilka godzin Twojego czasu.

Osoby, które pracują ze mną na co dzień doskonale wiedzą, że jestem wielkim fanem testów automatycznych.
Ostatnio w pracy napotkałem kilka ciekawych przypadków, którymi chciałbym się dziś z Wami podzielić.

Na początek przypomnijmy poziomy testowania:
1. Testy jednostkowe
2. Testy integracyjne
3. Testy Systemowe

O ile testy jednostkowe są prawie zawsze stosowane przez programistów, o tyle dwa pozostałe poziomy są czasami zaniedbywane.

Dzisiaj skupiamy się na testach systemowych. Można je robić ręcznie klikając, wpisując i czytając co pokazuje nam przeglądarka www. Można też zautomatyzować cały ten proces.
I do tego właśnie służy WebDriver.
Pokażę w tym wpisie dwa triki, które pomogą Ci zaoszczędzić sporo czasu jeśli programujesz testy akceptacyjne w środowisku .NET(C#) z wykorzystaniem biblioteki Selenium WebDriver.

Mam coś dla osób chcących zwiększyć swoje umiejętności w temacie programowania testów systemowych w WebDriverze: http://toolsqa.com/selenium-c-sharp/.
Szczególnie mogę polecić mój artykuł o przełączaniu kontekstu między oknami na stronie. Znajduje się on w tej właśnie serii.

Teraz Przejdźmy do rzeczy.

Problem numer 1: Próbujesz zastosować konstrukcję Implicit Wait, która nie przynosi skutku bo elementu nie udaje się znaleźć albo wykonać na nim jakiejś akcji.
Tak wygląda implicit wait:
WebBrowser.Driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(15);

Wtedy stosujesz metodę explicit wait, w której możesz zdefiniować na co czekasz - określasz, że czekasz aż element będzie na przykład możliwy do kliknięcia.
Uruchamiasz test - nadal nie działa.
Trik numer 1:
Zastosuj wtedy najprostsze rozwiązanie, takie jak pasywne oczekiwanie jedną sekundę:
Thread.Sleep(1000); - jest to podejście nieefektywne, ale czasami jedyne.

Problem numer 2: Próbujesz zaprogramować zdarzenie kliknięcia danego elementu, ale z jakiegoś powodu przycisk pozostaje niekliknięty. To z kolei powoduje, że Twój test kończy się błędem.

Oto kod, który może nie zadziałać, wbrew swojej prostej i oczywistej konstrukcji:
var saveButton = WebBrowser.Driver.FindElement(By.Id("btn-save"));
saveButton.Click();

Trik numer 2:
Aby rozwiązać problem zastąpiłem wyżej pokazany kod następującym rozwiązaniem:

var saveButton = WebBrowser.Driver.FindElement(By.Id("btn-save"));
saveButton.SendKeys(Keys.Return);

I zadziałało.

To tyle trików na dzisiaj. Dziękuję za uwagę. Więcej już niebawem.

Komentarze

Popularne posty z tego bloga

Aplikacja 'Perfect Life' - planowanie funkcjonalności

W poprzednim wpisie przedstawiłem budowę historii użytkownika(ang. User Story). Dzisiaj korzystając z tego narzędzia zaplanujemy kilka funkcjonalności. Czas na zaplanowanie funkcjonalności aplikacji mobilnej Perfect Life. Aplikacja jest tworzona w oparciu o technologię Xamarin.Forms. Póki co jednak abstrahując od rozwiązań technologicznych skupimy się na funkcjonalnościach. Dobre planowanie swojej pracy to podstawa sukcesu każdego projektu programistycznego. US1: Jako użytkownik aplikacji mobilnej chcę ekran logowania aby mieć możliwość zapisywania swoich postępów US2: Jako użytkownik aplikacji mobilnej chcę mieć kalkulator wskaźnika BMI aby móc mierzyć poziom swojej kondycji US3: Jako użytkownik aplikacji mobilnej chcę widzieć wykresy aby móc wizualnie interpretować swoje postępy US4: Jako użytkownik aplikacji mobilnej chcę mieć możliwość rozwiązania quizu, żeby zbadać wskaźnik Body Age US5: Jako użytkownik aplikacji mobilnej chcę pobierać pliki PDF aby mieć dostęp do planó...

Dziś Premiera Visual Studio 2017

Dzisiaj ważny dzień dla programistów .NET. Premiera środowiska programistycznego Visual Studio 2017. Relację na żywo można oglądać tutaj: https://launch.visualstudio.com/ Jutro będzie dzień warsztatów, w których możemy wziąć udział online. Nowe VS możemy pobrać ze strony: https://www.visualstudio.com/ Co ciekawe pobierając VS teraz otrzymasz 60 dni darmowego dostępu do Xamarin University. To ważne jeśli chcesz się nauczyć tworzyć aplikacje mobilne. Co nowego? Lepsza integracja z VSTS Live unit testing - zwróćmy uwagę na ikony po lewej stronie: Dodatkowe ikony: Wyszukiwanie metod po fragmencie nazwy. Code suggestions, czyli podpowiedzi na temat najlepszych praktyk w trakcie pisania kodu. Możemy zdefiniować własne sugestie dot. kodu i dodac własne konfiguracje edytora kodu: Dodatkowo pojawiły się dodatkowe ikony, dzięki którym łatwo się zorientować gdzie kończy się klasa, a gdzie namespace. Wygląda to nieźle. Inne usprawnienia o których mówił Scott Hanselman...

ASP.NET Core MVC - wdrożenie na Linuxie krok po kroku

Dzisiaj skupimy się na wdrożeniu aplikacji ASP.NET Core MVC. Po przeczytaniu tego artykułu będziesz potrafił uruchomić swoją pierwszą aplikację ASP.NET Core na maszynie wirtualnej z systemem Ubuntu 14. Załóżmy, że mamy nasza aplikację gotową i chcemy ją uruchomić. Jak najłatwiej to zrobić? Podczas debugowania możemy roboczo wykorzystać Visual Studio do uruchomienia aplikacji na IIS Express. Jednak w warunkach produkcyjnych kiedy chcemy wdrożyć aplikację na systemie Linux, musimy poszukać innego rozwiązania. Dlaczego? Bo Linux nie będzie obsługiwał ani visual Studio ani IIS Express, ponadto jeśli korzystamy z Continuous Deployment, to chcemy wdrożenie robić z poziomu konsoli. Jak pisałem w poprzednich postach, wraz z nadejściem ASP.NET Core MVC, mamy możliwość wdrażania aplikacji napisanych w C# na platformie Linux. To niezwykle istotne, bo przynosi ogromne korzyści, choćby dlatego, że ceny hostingu są kilka razy niższe dla maszyn z Linuxem niż z Windowsem. 1) Framework-depen...