Selenium 4 już na horyzoncie!

gru 11, 2020

Selenium w wersji 4 jest już dostępne i pomalutku wykorzystywane na rynku. Na chwilę obecną Selenium 4 wciąż jest w wersji Alfa. Czym jest wersja Alfa? Jest to wersja, w której zmiany jeszcze nie są zamknięte i mogą ulegać kolejnym modyfikacjom, bądź nawet możemy doświadczyć usuwania wprowadzonych już funkcjonalności. To oczywiście oznacza, że  firmy wciąż czekają na wdrożenie  do swoich projektów nowej wersji Selenium 4. Na takie ruchy jeszcze przyjdzie nam trochę poczekać, ale już dzisiaj omówimy sobie różnice miedzy nową wersją 4, a wykorzystywaną do tej pory wersją Selenium numer 3.

Największą i najbardziej znaczącą zmianą jest przyjęcie protokołu sterownika sieciowego W3C. Jest to o tyle ważna zmiana architektoniczna, gdyż razem z nią otrzymujemy wartość dodaną w postaci standaryzacji komunikacji z popularnymi przeglądarkami internetowymi. Google Chrome, Safari, Internet Explorer, Edge i inne szeroko wykorzystywane przeglądarki również korzystają ze standardu W3C, dzięki czemu od teraz komunikacja miedzy Selenium, a przeglądarkami zyskuje długo wyczekiwaną standaryzację komunikacji.

Dlaczego jest to tak ważna zmiana? Otóż do tej pory w wersji Selenium 3, zdarzały się takie sytuacje, że pewne polecenia, komendy Selenium działały różnie –  w zależności o stosowanej przeglądarki internetowej!

Selenium 3 vs Selenium 4

  1. Protokół komunikacyjny (wyżej opisywany)
  • W Selenium 3 interakcja przeglądarki opiera się na protokole JSON-owym, natomiast w nowej wersji Selenium – mamy już wystandaryzowany protokół W3C, który nie wymaga kodowania i dekodowania API, więc komunikacja odbywa się bezpośrednio.
  1. Rezygnacja z obsługi niektórych przeglądarek internetowych np. Opera i Phantom JS.
  1. Nowa wersja Selenium udostępnia przebudowaną architektura Selenium GRID 
  • Usprawniona została komunikacja między Hubem a Nodami. GRID w Selenium 4 stał się nieco bardziej elastyczny. Możemy uruchamiać testy na wielu przeglądarkach, w wielu konfiguracjach, a także w wielu systemach operacyjnych. W nowej wersji Selenium będziemy mieli możliwość uruchamiania GRIDA jako całości, a nie pojedynczych Nodów i Huba. Ważna jest również integracja z Deckerem, AWS, czy Azurem. Warto również dodać, że otrzymaliśmy nieco bardziej przyjazdy interfejs użytkownika z wieloma dodatkowymi informacjami o konfiguracji i ustawieniach. Poprawiona została również obsługa błędów i wypisywania informacji.
  1. W końcu dokumentacja Selenium została mocno zaktualizowana, szczególnie jeśli chodzi o między innymi o Selenium GRID czy Selenium IDE.
  1. Nieco bardziej rozbudowana wersji Selenium IDE
  • Nowa wersja udostępnia nowe funkcjonalności i usprawnienia. Dzięki zastosowaniu protokołu W3C,  udało się osiągnąć pełną integrację z wszystkimi popularnymi przeglądarkami.

Nowe, główne funkcjonalności Selenium 4:

  1. Robienie zrzutów ekranu z konkretnego miejsca przeglądarki.
  • W wersji Selenium 3, mamy możliwość zrobić tylko screena dla całej strony internetowej. Od nowej wersji będziemy mogli zrobić screena konkretnego obszaru strony, konkretnego elementu.
WebElement saveButton=driver.findElement(By.id(“save”));

File file= saveButton.getScreenshotAs(OutputType.FILE);

File destFile =new File(“save.png”);

FileUtils.copyFile(file,destfile);
  1. Otwieranie nowej karty przeglądarki.
  • W nowej wersji Selenium mamy możliwość łatwo otworzyć np. 2 adresy URL w dwóch różnych kartach w tym samym czasie.
driver.get(”https://odlaikadoautomatyka.pl/”);

driver.switchTo().newWindow(WindowType.TAB);

driver.navigate().to(”http://www.selenium-shop.pl/”);
  1. Pobieranie współrzędnych danego elementu na stronie internetowej.
  • Dzięki Selenium 4  możemy pobierać współrzędne elementów, takie jak:
    • wymiary
    • wysokość
    • szerokość
WebElement saveButton=driver.findElement(By.id(“save”));

System.out.println(“Wysokość:” + saveButton.getRect().getDimension().getHeight());

System.out.println(“Szerokość:” + saveButton.getRect().getDimension().getWidth());

System.out.println(“Lokalizacja X: “ + saveButton.getRect().getX());

System.out.println(“Lokalizacja Y: “ + saveButton.getRect().getY());
  1. Nowa metodę switchTo().parentFrame() ­–przejście do ramki rodzica.
  2. W nowej wersji Selenium Klasa Options rozszerza każdą klasę Capabilities
  • Wsparcie DevTools dla przeglądarek Chrome i Internet Explorer. Zmiana ta daje możliwość dostępu w zasadzie do wszystkich zakładek developerskich w przeglądarkach
  1. Relatywne lokatory
  • Umożliwiają lokalizację elementu na stronie za pomocą relatywnej pozycji innych elementów na stronie względem 
  1. Narzędzia deweloperskie Chrome
  • W Selenium 4 zobaczymy kilka wewnętrznych zmian w API, m.in. w nowej wersji sterownik Chromium rozszerza klasę sterownika Remote Web. Wcześniej w Selenium 3 sterownik Chrome rozszerza się bezpośrednio na klasę Remote Web Driver.

Oczywiście to tylko część zmian. Wybrałem te, które moim zdaniem przynoszą największe zmiany i dostarczają największą wartość dodaną. Jak wspomniałem na początku artykułu Selenium 4 to wciąż wersja Alfa i na dzień dzisiejszy bardziej przyglądamy się tej wersji niż ją wykorzystujemy w codziennej pracy. Niemiej jednak, jak sami możecie już wstępnie ocenić, są w niej całkiem przydatne i ciekawe zmiany, które w przyszłości mogą znacznie poprawić nasza pracę i przyczynić się do jeszcze większego wzrostu i tak już bardzo popularnego rozwiązania jakim jest Selenium.

Autor: Tomasz Stelmach

Pozostałe:

Jak napisać Plan Testów?

Jeśli jesteś testerem oprogramowania, bądź pracujesz w działach zapewniania jakości oprogramowania, to być może zetknąłeś się już z dokumentem o opisowej nazwie „Plan Testów”. Tego typu dokumentację tworzy się zarówno w dużych, jak i małych firmach, formalnych, jak...

Jak mierzyć jakość oprogramowania?

Istnieją różne cele testowania oprogramowania. Jednym z głównych celów testowania jest mierzenie jakości oprogramowania. Czym zatem jest ta tajemnicza „jakość”? Jakość oprogramowania to zestaw istotnych cech, które wyróżniają dane oprogramowanie – negatywnie lub...

Środowisko testowe – słów kilka

W tym materiale postaram się Wam przybliżyć nieco temat środowisk, a w szczególności skupić się na środowiskach testowych. Na samym początku musimy sobie zadać podstawowe pytanie: „Czym w ogóle jest środowisko w kontekście pracy dowolnej aplikacji?” Środowisko – to...

Poziomy wykonywania testów

Wytwarzanie oprogramowania to zwykle długi, czasochłonny, skomplikowany proces. Aby przebiegał on poprawnie i dało się nim efektywnie zarządzać - proces developmentu dzielony jest na różne etapy, fazy. Każda faza charakteryzuje się swoimi unikalnymi czynnościami i...

Best Practices testowania aplikacji mobilnych

Testowanie aplikacji mobilnych jest niezbędne, aby upewnić się, że każda aplikacja spełnia postawione przed nią wymagania techniczne oraz biznesowe. Ważne jest, aby każdy tester aplikacji mobilnych stosował sprawdzone i przede wszystkim skuteczne metody testowania. Z...