Selenium 4 już na horyzoncie!

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

Notatka o autorze:

Zajmuję się testowaniem, zabezpieczaniem i zapewnianiem jakości oprogramowania od ponad 13 lat. Rozpocząłem swoją karierę od testów manualnych i analizy biznesowo-technicznej. Obecnie prowadzę firmę Quality Island, która zajmuje się szeroko pojętym testowaniem oprogramowania oraz szkoleniami dla przyszłych i obecnych testerów oprogramowania. Moją specjalnością są testy automatyczne aplikacji webowych oraz budowa procesów automatyzacji i robotyzacji. Od 8 lat prowadzę aktywnie szkolenia oraz konsultacje z tych tematów i wykonuję zlecenia dla firm trzecich jako konsultant, ekspert oraz audytor. Współpracuję również z firmami jako osoba do rekrutacji i weryfikacji technicznych. Interesują mnie głównie tematy związane z architekturą IT oraz zagadnienia DevOps/TestOps, ponieważ ściśle wiążą się z zapewnianiem jakości oprogramowania.

 

Tomasz Stelmach

CEO&Founder

 

0 komentarzy

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *