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:

Selenium WebDriver VS Cypress

Z pewnością Cypress miał mocne wejście w świat automatyzacji testów. Jednak od jego debiutu minęło już sporo czasu. Zamiast rozpychać się na rynku - Cypress widocznie mocno spuścił z tonu.Nie oznacza to jednak, że przestał się rozwijać, gdyż cały...

WOŚP 2021 – Twoje udostępnienie to nasza wpłata!

Od laika do Automatyka - największy w Polsce kurs online o automatyzacji testów, szkolenia, konsulting, doradztwo, usługi audytowe i wdrożeniowe. Dołącz do akcji wsparcia WOŚP Zapraszamy Cię do dołączenia do akcji wspierającej Wielką Orkiestrę Świątecznej Pomocy- 29...

Testowanie aplikacji mobilnych [Część 2]

W poprzednim materiale szczegółowo przedstawiłem aplikacje mobilne, ich typy, wady oraz zalety. Powiedziałem również nieco o testowaniu aplikacji mobilnych na urządzeniach rzeczywistych, emulatorach oraz w chmurze. Dzisiaj chciałbym skupić się stricte na etapach...

Testowanie aplikacji mobilnych [Cześć 1]

O tym, jak ważną rolę odrywania testowanie w całym procesie wytwórczym, nie trzeba już dzisiaj nikogo przekonywać. Ostatnio bardzo dotkliwie brak odpowiedniej jakości testów doświadczyli twórcy gry „CyberPunk 2077”. Długo wyczekiwana światowa premiera gry nie wypadła...