#automatyzacjaKatalon02 – Kolejne funkcje IDE Katalon Studio, TestSuite, CustomKeywords

Witajcie moi drodzy, w tym wpisie kontynuje pierwszy wzmiankę o Katalon Studio, którą znajdziecie tutaj – >

https://gregkaqa.pl/index.php/2020/01/10/automatyzacjakatalon01-zapoznanie-sie-z-programem-katalon-studio/

Ostatni wpis skończył się na wpisach dotyczących obiektów dynamicznych i w sumie prostym teście z wejściem na stronę bing.com, następnie wpisaniu tekstu i wyszukania tego. A na końcu następnie z wyników wyszukiwania wejście na stronę twojapogoda.pl

Lecimy dalej z omawianiem narzędzia.

Object Repository

Kolejną częścią naszego projektu jest katalog z obiektami, który został nazwany jako Object Repository. Kliknięcie aktualnie w niego nic wam nie da, dlaczego ? A no dlatego, że jeszcze nie zaciągnęliśmy żadnych obiektów.

Dla przypomnienia, obiekty w Katalonie dzielą się na. Obiekty statyczne czyli, te które znajdą się tutaj w object repository oraz dynamiczne, które zobaczyliście w poprzednim wpisie.

Aby uzyskać coś w object repository używamy wbudowanych w IDE funkcji : spy web lub record web. Jeśli macie inne projekty to są np. spy mobile.

Ikony z tego menu pozwalają wam na odpalenie owych narzędzi.

Record Web

Aby nagrać używając record web, tworzymy lub przechodzimy do istniejącego test casesa.

Jeśli test case już coś zawiera to pojawi nam się pytanie odnośnie tego czy nagrywamy od nowa (wszystko co mamy w teście zostanie usunięcie, czy też odpowiadamy twierdząco.
Wtedy to, też nasze wcześniej zapisane rzeczy na test case nie przepadają a my nagrywamy coś dalej.
Oczywiście znam ten program i np. jeśli w teście macie wejdź na stronę i zaloguj się, następnie wykonaj jakieś akcje.
Jeśli kontynuujecie nagrywanie to np. akcje logowania musicie wykonać ręcznie, a następnie powtarzające się wpisy usunąć.

Zrobimy nowy testcase pod to nagrywanie. 🙂
Klikamy ikonę web recorder i widzimy takie okno :

Rozwinąłem od razu przeglądarki.
A więc aby rozpocząć jakieś testy wpisujemy docelowy adres testowanej witryny / aplikacji w pole URL i możemy użyć Firefoxa.

Jeśli kliknęliśmy na ikonkę firefoxa, to będziemy mieć coś takiego :

Mamy już nagrane dwa kroki naszego testu, lecimy dalej.
UWAGA ! jeśli np. klikniecie w coś co nie jest porządne w waszym teście np.

To zaznaczacie krok i używacie remove. 🙂 Czasami się zdarza kliknąć nie to, ale potem nawet po zapisaniu nagrywania, można to usunąć, także bez stresu. Sprawdzę poprzedni test i spróbuje zrobić coś podobnego, tylko że nagrywając.

Stworzyłem takie same kroki jak w teście poprzednim.
Teraz klikamy na Show Captured Object, aby zobaczyć co przechwyciliśmy.

Tak to wygląda, mamy wszystkie obiekty, z którymi zrobiliśmy jakieś interakcje. Ta sekcja składa się z 3 bloków.
Captured object to właśnie przechwycone obiekty.
Następnie object properties to okno propertiesów czyli jak dany obiekt został rozpoznany, za pomocą jakich atrybutów. Dodatkowo mamy tam też selection metod są to : xpath, attributes, css. Mamy możliwość dokonania wyboru po jakich typach będą nasze obiekty rozpoznawane.

Podział metody do selekcji.

Widzimy że w opcji domyślnej rozpoznaje obiekt bing pole wpisywania, po xpath, w którym selector to input id i nazwa, o selektorach już niedługo.
Ale tak jak wszyscy mówią, tak i ja mówię, że najlepszym selektorem jest zawsze ID, jeśli oczywiście developer zadbał o to by były unikalne.
Często niestety różne frameworki i tym podobne, generują jakieś losowe nic nie mówiące selektory.

W oknie przeglądarki ręcznie wpisujemy bing.com, przechodzimy do atrybutów, widzimy okno jak wyżej.
Domyślne są włączone za pomocą checkboxów i na dole w selected locator widzimy podgląd jak obiekt będzie wyglądał.
Moja modyfikacja tego pola wygląda tak. Spokojnie później jak coś możecie zmienić te atrybuty i xpathe danego obiektu.

W xpath możemy też kombinować ręcznie z selektorami, których nie przechwycił, ja połączyłem pierwszy z drugim.

//input[@id=’sb_form_go’] + //div[@id=’sb_go_par’]/input
Zapisałem jako //*[@id=’sb_form_go’ or id=’sb_go_par’] wszystkie elementy którego id jest takie lub takie, można też zamiast or dać and.
Wtedy oba warunki muszą być spełnione.
Czego brakuje ? Usuwania niepotrzebnych obiektów, które zostały przechwycone. Klikamy okej i zapisujemy nagrany test.

Jak widać jednak da się odznaczyć obiekty w następnym oknie co nas nie interesuje ?

Mamy możliwość odznaczenia create new folder(s) i ze struktury automatycznej – drzewiastej. Możemy kliknąć nowy folder i zrobić to ręcznie.

Bug ? Obiekty się dodały mimo ich odznaczenia trzeba je usunąć ręcznie.

Nasz nagrany test wygląda tak.

Tak prezentował się nasz test z pierwszego wpisu.

Tak wygląda zmodyfikowany test dodałem zmienne globalną zamiast tekstu oraz usunąłem przekierowanie z adresu URL – tak recorder przechwycił.

Jak widzimy uruchamiając test wszystko działa poprawnie 🙂
Czasami nie rozpoznaje stron, jak nie mam ublocka w przeglądarce 😀

Obiekt ? Klikamy dwa razy na obiekt z object repository, dostaniemy okno z edycją ów obiektu.

Obiektami jeszcze będziemy się bawić, przejdźmy do kolejnych sekcji.

Test Suites – czyli zestaw test casesów.

Tworzymy nowy zestaw testów, następnie przyciskiem add dodajemy interesujące nas test case`s.

Zapisujemy i odpalamy nasz Test Suite, tym razem na Chrome 🙂

Serio coś takiego jest przepuszczane a następnie nie wiesz dlaczego twój test się wywalił 😀

Po usunięciu nasz test suite z dwoma test casesami przebiegł poprawnie.

W katalogu naszego projektu mamy dostępne raporty wykonania test suites. Spoko test casesy się tam nie odkładają, więc wam nie zaśmiecą dysku. 🙂

Struktura wygląda tak per uruchomienie.
Dziwne bo były w poprzednich wersjach Katalon Studio widoczne w strukturze projektu, ale w sumie raporty się pakuje albo wystawia na apache, to można im wybaczyć. 🙂

Test data – data files

Test data to nic innego jak źródła danych takie jak plik excela, csv, database data, internal data. Database data zdecydowanie lepiej ogarnąć za pomocą skryptów w groovym czyli keywords.

Nie mam aktualnie offica 😀 pokazałbym jakiś excel ale to może w następnym wpisie, średnio ciekawe to jest, ja jednak wolałbym się skupić na bazach danych.

Ta sekcja jest mało ciekawa.

Data files możemy użyć np. w metodzie set text wygląda to tak. że w polu input wybieramy naszą definicję test data i parametry.

Keywords – niestandarodowe metody w Groovy

Tworzymy najpierw package a potem w niej keyword.

Metoda w klasie wygląda tak :

@Keyword
def losowytekst()
{

}

Metoda składa się ze słowa adnotacyjnego przed metodą @Keyword.
Dalej słowa kluczowego def – definicja metody, zmiennej etc.
unikalna nazwa lub przeciążona.
Między nawiasami brak lub jakieś parametry różnorakiego typu.
Przeciążanie metod szybkie np. ta sama nazwa ale jedna nie ma parametrów a druga ma np. dwa parametry :).
Jeśli byłyby dwie metody o tej samej nazwie i tej samej liczbie argumentów to kompilator wywali błąd.

Stworzyłem testowy Test Case do samego testowania keywordsów.
Aby ‘zawołać’ CustomKeyword
W script mode wpisujemy CustomKeywords.
i wyskoczy okno uzupełniające, wybieramy metodę z naszej paczki i gotowe, dopisujemy ewentualne parametry i gotowe !


Mamy możliwość wpisywania i zawężania wyników podpowiedzi metod.

Do metod możemy wykorzystać wszystko, nawet funkcje których używaliśmy w testcases z początkiem WebUI.

@Keyword
def otwieramystroneczekamy(String strona, int ileczekamy){
WebUI.openBrowser(strona, FailureHandling.STOP_ON_FAILURE)
WebUI.delay()
}

Metoda poprawnie się nam wykonała 🙂

Przed końcem tego wpisu zrobię przykładową metodę, metoda działa jednak pojawiły mi się typowe problemy z selektorami.
Rozwiążemy jest sposobami w następnym wpisie.
Tego typu problemy to będzie norma, ale jak się nauczymy je rozumieć i szybko rozwiązywać, pisanie testów będzie bardzo proste.

Z testcase z pierwszego wpisu stworzyłem metodę, bo kod jest powtarzalany, wygląda ona tak :

@Keyword
def TestObject stworzcustomobjekt(String poczymszukac, String wartoscpola) {
TestObject obiekt = new TestObject("dynamic")
obiekt.addProperty(poczymszukac, ConditionType.CONTAINS, poczymszukac, true)
return obiekt
}

Im więcej powtarzalnego kodu wyniesionego do metod tym lepiej.

Tak więc na errorze zakończymy ten wpis 🙂
Metoda tworzenia dynamicznego obiektu działa prawidłowo dla 10tej linijki poprawnie kliknęło element.

W następnym wpisie dotyczącym Katalona będzie kontynuacja Keywordsów, bo to bardzo interesująca sekcja.
Zaczniemy także Test Listenery 🙂 W tym zapomniałem o WebSpy więc również zostanie on poruszony.
Dzięki za przeczytanie i do następnego !!!

Napisz komentarz