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.
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
Prześlij komentarz