Grid w Selenium 4

Interesuje Cię ten kurs?

Zapisz się na listę, a wyślę Ci szczegóły i informację jak dołączyć 👇 

Selenium Grid pozwala na uruchamianie testów równolegle na różnych maszynach. Czyli jeżeli chcemy uruchamiać testy napisane w Selenium na różnych wersjach przeglądarek i różnych systemach operacyjnych, to Selenium Grid jest tym, czego potrzebujemy.

Uwaga: do zrozumienia tej lekcji konieczna jest wiedza na temat działania Grida w Selenium 3. Lekcje dotyczące tego tematu w Javie: 1, 2; oraz w C#: 1, 2, 3, 4.

Praktyczne użycie Selenium Grid 4 wraz z komendami zobaczysz w kolejnej lekcji.

Do tej pory wyglądało to tak, że na Selenium Grid składał się tak zwany hub i jeden lub więcej node’ów. Hub jest centralnym punktem całego grida. Przyjmuje żądania uruchamiana testów, a potem je dystrybuuje na odpowiednie node’y. Node’y to poszczególne instancje Selenium.

Z reguły gdy to tłumaczę podaję następujący przykład. Masz trzy maszyny, umówmy się, że są to po prostu trzy fizyczne komputery. Jeden z nich będzie pełnił rolę huba. Będzie więc maszyną, na której nie będziemy wykonywali testów. Dwa pozostałe będą node’ami. Jeden będzie miał zainstalowany system Windows, a drugi na przykład dowolny Linux.

Gdy wyślemy żądanie wykonania testów poleci ono do huba na maszynie pierwszej. Tam hub podejmie decyzję, na którym nodzie dany test powinien zostać wykonany. Decyzję podejmuje w oparciu o informacje jakie otrzyma. Jeżeli otrzyma informację, że test należy uruchomić na przeglądarce Chrome na Windowsie, to gdy znajdzie node’a z takimi parametrami, tam przekaże testy do wykonania.

O tym czy dana maszyna otrzyma rolę hub czy node decydujemy my odpalając na danej maszynie skrypt z odpowiednimi parametrami. W podanym przykładzie mamy trzy fizyczne maszyny i każda ma swoją rolę, ale nic nie stoi na przeszkodzie, żeby jedna maszyna była zarówno hubem jak i nodem. Wtedy po prostu odpalamy na tej maszynie odpowiedni skrypt dwa razy z różnymi parametrami albo odpalamy go w trybie standalone, czyli nie podając żadnej roli.

Maszyny też wcale nie muszę być fizyczne: mogą to być na przykład maszyny wirtualne.

Komponenty w Selenium Grid 4

Zanim przejdziemy dalej musimy przebrnąć przez architekturę nowego Grida. Bez tego ciężko będzie zrozumieć dostępne tryby w Selenium Grid 4.

Grid w wersji czwartej Selenium, jest napisany od zera. Teraz jest stworzony w oparciu o 6 komponentów, z których każdy ma inne zadanie. Tymi komponentami są: Router, Distributor, Node, Session Map, New Session Queue oraz Event Bus. 

Poniżej krótko opisuję za co odpowiadają poszczególne komponenty.

Router

Router dystrybuuje requesty do odpowiednich komponentów. To jest punkt wejściowy całego Grida.

Distributor

Ten komponent ma informacje o node’ach i ich możliwościach (capabilities; wie na przykład jakie przeglądarki są dostępne na danym nodzie). To właśnie ten komponent odpowiada za odnalezienie odpowiedniego node’a, na którym mogą zostać uruchomione testy.

Node

Node’ów może być wiele. Każdy node odpowiada za zarządzanie slotami dla dostępnych przeglądarek na danej maszynie.

Session Map

Ten komponent przechowuje informacje o id sesji i nodzie, na którym ta sesja jest odpalona.

New Session Queue

Ten komponent przetrzymuje wszystkie requesty dotyczące nowych sesji.

Event Bus

Służy do komunikacji pomiędzy komponentami (Node’y, Distributor, New Session Queue, Session Map).

Jeżeli interesuje Cię dokładnie za co odpowiadają poszczególne komponenty, możesz to sprawdzić w dokumentacji pod tym linkiem.

Przykład działania komponentów

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Tryby uruchamiania Grida

Żeby móc uruchomić Selenium Grida potrzebujemy najpierw go pobrać. Selenium Grid możesz pobrać tutaj. Jest to po prostu plik o rozszerzeniu *.jar, który będziemy uruchamiać z wiersza poleceń. Tam też zdecydujemy w jakim trybie chcemy uruchomić plik.

W Selenium 4 mamy do dyspozycji trzy tryby.

Standalone

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Hub i Node

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Distributed

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.