Selenium Samouczek dotyczący siatki: konfiguracja koncentratora i węzła (przykład)

Co to jest Selenium Siatka?

Selenium Krata jest częścią Selenium Pakiet specjalizujący się w uruchamianiu wielu testów w różnych przeglądarkach, systemach operacyjnych i maszynach równolegle. Osiąga się to poprzez kierowanie poleceń zdalnych instancji przeglądarki, gdzie serwer działa jako hub. Użytkownik musi skonfigurować zdalny serwer, aby wykonać testy.

Selenium Grid ma 2 wersje – starszą Grid 1 i nowszą Grid 2. Skupimy się tylko na Grid 2, ponieważ Grid 1 jest stopniowo wycofywany przez Selenium Zespół.

Selenium Krata Architektura

Selenium Grid ma koncentrator i węzeł Architektura.

Selenium Krata Architektura
Selenium Krata Architektura

Piasta

  • Koncentrator to centralny punkt, do którego ładujesz testy.
  • W siatce powinien znajdować się tylko jeden koncentrator.
  • Koncentrator jest uruchamiany tylko na jednym komputerze, powiedzmy, komputerze z systemem operacyjnym Windows 7 i którego przeglądarką jest IE.
  • Na komputerze zawierającym koncentrator zostaną uruchomione testy, ale zobaczysz, że przeglądarka w węźle jest zautomatyzowana.

Węzły

  • Węzły to Selenium instancje, które wykonają testy załadowane do koncentratora.
  • W siatce może znajdować się jeden lub więcej węzłów.
  • Węzły można uruchamiać na wielu komputerach z różnymi platformami i przeglądarkami.
  • Maszyny obsługujące węzły nie muszą być tą samą platformą, co komputer koncentrujący.

Selenium Grid wykorzystuje koncepcję węzła koncentrującego, w której test uruchamia się tylko na jednej maszynie zwanej a piasta, ale wykonanie zostanie wykonane przez różne maszyny zwane węzły

Jak skonfigurować Selenium Siatka?

W tej sekcji będziesz używać 2 maszyn. Pierwsza maszyna będzie systemem, na którym będzie działać koncentrator, a druga maszyna będzie uruchamiać węzeł. Dla uproszczenia nazwijmy maszynę, na której działa koncentrator, „Maszyną A”, podczas gdy maszynę, na której działa węzeł, nazwiemy „Maszyną B”. Ważne jest również zanotowanie ich adresów IP. Załóżmy, że Maszyna A ma adres IP 192.168.1.3, podczas gdy Maszyna B ma adres IP 192.168.1.4.

Krok 1) Pobierz Selenium Serwer od tutaj.

Set Up Selenium Krata

Krok 2) Możesz umieścić Selenium Plik .jar serwera w dowolnym miejscu na dysku twardym. Ale na potrzeby tego samouczka umieść go na dysku C zarówno komputera A, jak i komputera B. Po wykonaniu tej czynności instalacja została zakończona Selenium Siatka. Następujące kroki uruchomią hub i węzeł.

Krok 3)

  • Teraz uruchomimy hub. Przejdź do komputera A. Korzystając z wiersza poleceń, przejdź do katalogu głównego dysku komputera A – C, ponieważ jest to katalog, w którym umieściliśmy Selenium Serwer.
  • W wierszu polecenia wpisz java -jar selenium-server-standalone-2.30.0.jar -role hub
  • Koncentrator powinien zostać pomyślnie uruchomiony. Wiersz poleceń powinien wyglądać podobnie do poniższego obrazka.

Set Up Selenium Krata

Krok 4) Innym sposobem sprawdzenia, czy koncentrator działa, jest użycie przeglądarki. Selenium Grid domyślnie używa portu 4444 Maszyny A jako swojego interfejsu sieciowego. Po prostu otwórz przeglądarkę i przejdź do http://localhost:4444/grid/console

Set Up Selenium Krata

Możesz także sprawdzić, czy Maszyna B może uzyskać dostęp do interfejsu internetowego koncentratora, uruchamiając tam przeglądarkę i przechodząc do miejsca, w którym „iporhostnameofmachineA” powinien być adresem IP lub nazwą hosta komputera, na którym działa koncentrator. Ponieważ adres IP maszyny A to 192.168.1.3, w przeglądarce na maszynie B powinieneś wpisać http://192.168.1.3:4444/grid/console

Krok 5)

  • Teraz, gdy koncentrator jest już skonfigurowany, uruchomimy węzeł. Przejdź do komputera B i uruchom tam wiersz poleceń.
  • Przejdź do katalogu głównego dysku C i wpisz poniższy kod. Użyliśmy adresu IP 192.168.1.3, ponieważ tam działa koncentrator. Użyliśmy również portu 5566, chociaż możesz wybrać dowolny bezpłatny numer portu.
  • UWAGA: Jeśli używasz, musisz teraz podać ścieżkę do sterownika Gecko Firefox. Oto zaktualizowany kod, którego należy użyć
java -Dwebdriver.gecko.driver="C:\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar -role webdriver -hub http://192.168.1.3:4444/grid/register -port 5566

Set Up Selenium Krata

  • Po naciśnięciu klawisza Enter wiersz poleceń powinien wyglądać podobnie do poniższego obrazka.

Set Up Selenium Krata

Krok 6) Idź do Selenium Interfejs sieciowy Grid i odśwież stronę. Powinieneś zobaczyć coś takiego.

Set Up Selenium Krata

W tym momencie skonfigurowałeś już prostą siatkę. Jesteś teraz gotowy do zdalnego uruchomienia testu na komputerze B.

Kiedy użyć Selenium Siatka?

Powinieneś użyć Selenium Siatka, gdy chcesz wykonać jedną lub obie z poniższych czynności:

  • Możesz przeprowadzać testy w różnych przeglądarkach, systemach operacyjnych i na różnych komputerach jednocześnie. Zapewni to, że aplikacja, którą jesteś Testowanie jest w pełni kompatybilny z szeroką gamą kombinacji przeglądarek i systemów operacyjnych.
  • Oszczędzaj czas podczas wykonywania zestawów testów. Jeśli skonfigurujesz Selenium Grid do uruchomienia, powiedzmy, 4 testów na raz, wtedy będziesz w stanie ukończyć cały pakiet około 4 razy szybciej.

Siatka 1.0 kontra siatka 2.0

Poniżej przedstawiono główne różnice między Selenium Siatka 1 i 2.

Siatka 1 Siatka 2
Selenium Grid 1 ma swój własny pilot, który różni się od Selenium Serwer RC. To dwa różne programy. Selenium Grid 2 jest teraz dołączony do Selenium Plik jar serwera
Musisz zainstalować i skonfigurować Apache Najpierw mrówkuj, zanim będziesz mógł użyć siatki 1. Nie musisz instalować Apache Ant w Grid 2.
Może tylko wspierać Selenium Polecenia/skrypty RC. Może wspierać oba Selenium Skrypty RC i WebDriver.
Na jednego pilota można zautomatyzować tylko jedną przeglądarkę. Jeden pilot może zautomatyzować do 5 przeglądarek.

Selenium siatkę można skonfigurować na dwa różne sposoby; jeden za pomocą wiersza poleceń, a drugi za pomocą pliku konfiguracyjnego JSON.

Projektowanie skryptów testowych, które można uruchomić w sieci Grid

Aby zaprojektować skrypty testowe, które będą działać na siatce, musimy użyć Pożądane możliwości i RemoteWebDriver obiekty.

  • Pożądane możliwości służy do ustawiania typu przeglądarka i OS że zautomatyzujemy.
  • RemoteWebDriver służy do ustawienia węzła (lub maszyny), na którym będzie wykonywany nasz test.

Aby użyć Pożądane możliwości obiekt, musisz najpierw zaimportować ten pakiet

Projektowanie skryptów testowych, które można uruchomić w sieci grid

Aby użyć RemoteWebDriver obiekt, musisz zaimportować te pakiety.

Projektowanie skryptów testowych, które można uruchomić w sieci Grid

Korzystanie z obiektu DesiredCapabilites

Przejdź do interfejsu sieciowego Grid i najedź kursorem na obraz przeglądarki, którą chcesz zautomatyzować. Zwróć uwagę na Platforma, i nazwa przeglądarki pokazane w podpowiedzi.

Korzystanie z obiektu DesiredCapabilites

W tym przypadku platforma to „XP”, a nazwa przeglądarki to „Firefox".

Będziemy używać platformy i nazwy przeglądarki w naszym WebDriverze, jak pokazano poniżej (oczywiście musisz najpierw zaimportować niezbędne pakiety).

Korzystanie z obiektu DesiredCapabilites

Korzystanie z obiektu RemoteWebDriver

Zaimportuj niezbędne pakiety dla RemoteWebDriver, a następnie przekaż obiekt DesiredCapabilities, który utworzyliśmy powyżej, jako parametr dla obiektu RemoteWebDriver.

Korzystanie z obiektu RemoteWebDriver

Uruchamianie przykładowego przypadku testowego w siatce

Poniżej znajduje się prosty WebDriver Testowanie kod, w którym możesz utworzyć Eclipse na maszynie A. Po uruchomieniu automatyzacja zostanie przeprowadzona na maszynie B.

import org.openqa.selenium.*; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import java.net.MalformedURLException; 
import java.net.URL; 
import org.openqa.selenium.remote.RemoteWebDriver; 
import org.testng.Assert;
import org.testng.annotations.*; 

public class Grid_2 {
 WebDriver driver;
 String baseUrl, nodeURL; 
 @BeforeTest 
 public void setUpWthrows MalformedURLException {
 baseUrl = "http://newtours.demoaut.com/";
 nodeURL = "http://192.168.1.4:5566/wd/hub"; 
 DesiredCapabilities capability = DesiredCapabilities.firefox();
 capability. setBrowserName("firefox");
 capability. setPlatform(Platform.XP);
 driver = new RemoteWebDriver(new URL(nodeURL), capability); 
} 
@AfterTest 
public void afterTest() {
 driver.quit(); 
 }
@Test 
public void simpleTest() { 
driver.get(baseUr1);
 Assert.assertEquas("Welcome: Mercury Tours", driver.getTitle()); } 
} 

Test powinien przejść.

Uruchamianie przykładowego przypadku testowego na siatce Uruchamianie przykładowego przypadku testowego na siatce

Selenium konfiguracja siatki przy użyciu pliku JSON

JSON oznacza Javascript Notacja obiektu. Jest to standardowy format używany do wymiany danych pomiędzy przeglądarką a serwerem WWW. Selenium ma wbudowany plik konfiguracyjny JSON, który można wykorzystać do skonfigurowania siatki Selenium.

Poniżej przedstawiono kroki konfiguracji siatki Selenium przy użyciu pliku konfiguracyjnego JSON.

Krok 1) Pobierz kod pliku konfiguracyjnego JSON, korzystając z poniższej ścieżki

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultHub.json

Oto kod

{
	  "port": 4444,
	  "newSessionWaitTimeout": -1,
	  "servlets" : [],
	  "withoutServlets": [],
	  "custom": {},
	  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
	  "registryClass": "org.openqa.grid.internal.DefaultGridRegistry",
	  "throwOnCapabilityNotPresent": true,
	  "cleanUpCycle": 5000,
	  "role": "hub",
	  "debug": false,
	  "browserTimeout": 0,
	  "timeout": 1800
}

Krok 2) Skopiuj i wklej kod do edytora tekstu, takiego jak Notatnik, z rozszerzeniem „.json”

Krok 3)Uruchom koncentrator za pomocą poniższego polecenia w wierszu poleceń

java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json

UWAGA: Selenium samodzielny plik jar i plik json muszą znajdować się w tym samym katalogu

Krok 4) Pojawi się poniższy ekran wskazujący, że koncentrator został pomyślnie skonfigurowany

Selenium Konfiguracja siatki przy użyciu pliku JSON

Krok 5) Otwórz przeglądarkę internetową i spróbuj połączyć się z poniższym adresem URL

http://192.168.43.223:4444/grid/console

UWAGA: Adres URL może się różnić w zależności od komputera. Należy użyć adresu URL, po którym następuje informacja „Węzły powinny się zarejestrować” na powyższym ekranie.

Krok 6) Pojawi się ekran konsoli Grid, który wskazuje, że koncentrator jest uruchomiony

Selenium Konfiguracja siatki przy użyciu pliku JSON

Skonfiguruj WĘZŁY za pomocą JSON

Krok 1) Pobierz przykładowy plik konfiguracyjny węzła dostarczony przez Selenium korzystając z poniższego adresu URL

https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/java/server/src/org/openqa/grid/common/defaults/DefaultNode.json

UWAGA: JEŚLI UŻYWASZ SELENIUM 3.0 LUB WYŻSZEJ WERSJI, MUSISZ UŻYĆ PONIŻSZEGO PLIKU JSON

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.json

Krok 2) Skopiuj i wklej kod do edytora tekstu, takiego jak Notatnik, i zapisz plik z rozszerzeniem „.json”

Krok 3)

Uruchom poniższe polecenie w wierszu poleceń

Java-Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-2.53.1.jar -role node -nodeConfig node1.json

UWAGA: Przed uruchomieniem polecenia upewnij się, że sterowniki dla każdej przeglądarki zostały pobrane do katalogu komputera lokalnego

Krok 4) Poniższy ekran pojawi się po naciśnięciu klawisza Enter

Skonfiguruj węzły za pomocą JSON

Krok 5) Przejdź do konsoli grid, aby sprawdzić, czy węzły zostały pomyślnie skonfigurowane

Skonfiguruj węzły za pomocą JSON

Przeglądarki są wyświetlane na konsoli siatki. Stąd możemy być pewni, że węzły są skonfigurowane pomyślnie.

Przykładowe przypadki testowe włączone Selenium Krata:

 package com.objectrepository.demo;
 import org.openqa.selenium.*;
 import org.openqa.selenium.remote.DesiredCapabilities;
 import java.net.MalformedURLException;
 import java.net.URL;
 import org.openqa.selenium.remote.RemoteWebDriver;
 import org.testng.Assert;
 import org.testng.annotations.*;

 public class SeleniumGrid {

     WebDriver driver;
     String baseURL, nodeURL;

     @BeforeTest
     public void setUp() throws MalformedURLException {
         baseURL = "http://demo.guru99.com/test/guru99home/";
         nodeURL = "http://192.168.43.223:5566/wd/hub";
         DesiredCapabilities capability = DesiredCapabilities.chrome();
         capability.setBrowserName("chrome");
         capability.setPlatform(Platform.WIN10);
         driver = new RemoteWebDriver(new URL(nodeURL), capability);
     }

     @AfterTest
     public void afterTest() {
         driver.quit();
     }
     @Test
     public void sampleTest() {
         driver.get(baseURL);
         

         if (driver.getPageSource().contains("MOBILE TESTING")) {
             Assert.assertTrue(true, "Mobile Testing Link Found");
         } else {
             Assert.assertTrue(false, "Failed: Link not found");
         }

     }

 }

Powyższy kod uruchamia przeglądarkę Chrome i przechodzi do adresu URL określonego w zmiennej „baseURL”. Zweryfikowano, że nazwa łącza „Mobile Testing” jest wyświetlana na stronie

Adres URL w zmiennej „nodeURL” można zmodyfikować, aby odzwierciedlał adres IP komputera zdalnego. Wynik testu można zweryfikować domyślnie TestNG wygenerowany raport

Podsumowanie

  • Selenium Grid służy do jednoczesnego uruchamiania wielu testów w różnych przeglądarkach i na różnych platformach.
  • Grid wykorzystuje koncepcję węzła-centratora.
  • Koncentrator to centralny punkt, w którym ładujesz swoje testy.
  • Węzły to Selenium instancje, które wykonają testy załadowane do koncentratora.
  • Aby zainstalować Selenium Grid, wystarczy pobrać plik Selenium Plik jar serwera – ten sam plik, który jest używany podczas uruchamiania Selenium Testy RC.
  • Istnieją dwa sposoby sprawdzenia, czy koncentrator działa: jeden za pomocą wiersza poleceń, a drugi za pomocą przeglądarki.
  • Aby uruchomić skrypty testowe w sieci Grid, należy użyć obiektów DesiredCapabilities i RemoteWebDriver.
  • DesiredCapabilites służy do ustawienia typu przeglądarki i systemu operacyjnego, które będziemy automatyzować.
  • RemoteWebDriver służy do ustawiania węzła (lub maszyny), na którym będzie uruchamiany nasz test.