Selenium 4 już na horyzoncie!

grudzień 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:

Typy testów

Testowanie oprogramowania to bardzo rozległy obszar branży IT. Testować aplikacje możemy na wiele sposobów, a same testy mogą mieć różne cele. I to właśnie wspomniane cele testowania, definiują typy testów, jakimi możemy poddać oprogramowanie. Jeśli celem testów jest...

Agile i SCRUM, czyli co?

Agile to ostatnimi czasy bardzo popularny termin. Jest odmieniamy przez wszystkie przypadki. Obecnie zdecydowana większość zespołów developerskich korzysta z Agile w swojej codziennej pracy. O „Agile” i „Zwinnym” podejściu do prowadzenia projektów słyszeli już chyba...

Raport z testów – must have!

Dzisiaj napiszę kilka słów o niezbędnym elemencie w każdym procesie testowym - mowa oczywiście o tytułowym – Raporcie z Testów. Na początek, krótka regułka określająca, czym tak naprawdę jest Raport z Testów: O jakich czynnościach testowych traktuje powyższa...

Testy wydajnościowe

W tym materiale chciałbym przybliżyć Wam tematykę testów wydajnościowych. Testy wydajnościowe te są dość specyficznym, ale jednocześnie popularnym i bardzo ważnym rodzajem testów w przekroju całego procesu testowego niemal każdego oprogramowania. Testowanie wydajności...

Testy End to End

W tym materiale postaram się przybliżyć Wam szczególny rodzaj testów, jakim niewątpliwie są testy End To End. Zapewne, jeśli jesteście testerami, czy tez osobami należącymi do zespołów zapewniania jakości, to nieraz słyszeliście termin „End-to-End”, czy...