Selenium Tutorial Grid: Configurarea unui Hub și a unui Nod

⚡ Rezumat inteligent

Selenium Grid rulează teste multiple pe browsere, sisteme de operare și mașini în paralel, utilizând o arhitectură hub-and-node. Hub-ul încarcă testele pe o mașină, în timp ce nodurile le execută pe altele, permițând o acoperire mai rapidă între browsere prin linia de comandă sau configurația JSON.

  • 🧩 Grilă definită: Rulează teste în paralel pe browsere, sisteme de operare și mașini prin intermediul unui hub și noduri.
  • 🎯 Butuc: Mașina centrală unică unde încărcați testele; un singur hub per grilă.
  • 🖥️ Nodurile: Una sau mai multe mașini care execută efectiv testele pe platforme diferite.
  • ⚙️ Înființat: Lansarea Selenium Fișier jar de server cu hub -role și nod -role sau utilizați un fișier de configurare JSON.
  • 🧪 Scripturi de testare: Folosește DesiredCapabilities și RemoteWebDriver pentru a viza un browser, un sistem de operare și un nod.
  • ⏱️ Când utilizați: Verificări ample de compatibilitate între browser și sistemul de operare și execuție paralelă mai rapidă a suitei.

Selenium Tutorial Grilă

Ce Este Selenium Grilă?

Selenium Grilă este o parte din Selenium Suită specializată în rularea mai multor teste pe diferite browsere, sisteme de operare și mașini în paralel. Se realizează prin direcționarea comenzilor instanțele de browser la distanță în care un server acționează ca un hub. Un utilizator trebuie să configureze serverul la distanță pentru a executa testele.

Selenium Grid are 2 versiuni – mai veche Grid 1 și mai nou Grid 2. Ne vom concentra doar pe Grid 2, deoarece Grid 1 este treptat depreciată de către Grid. Selenium Team.

Selenium Grilă Architectură

Selenium Grid are un hub și un nod Architectură.

Selenium Grilă Architectură
Selenium Grilă Architectură

Butuc

  • Hub-ul este punctul central în care vă încărcați testele.
  • Ar trebui să existe un singur hub într-o rețea.
  • Hub-ul este lansat doar pe o singură mașină, să zicem, un computer al cărui sistem de operare este Windows 7 și al cărui browser este IE.
  • Mașina care conține hub-ul este locul unde vor fi rulate testele, dar veți vedea că browserul este automatizat pe nod.

Nodurile

  • Nodurile sunt Selenium instanțe care vor executa testele pe care le-ați încărcat pe hub.
  • Într-o grilă pot exista unul sau mai multe noduri.
  • Nodurile pot fi lansate pe mai multe mașini cu platforme și browsere diferite.
  • Mașinile care rulează nodurile nu trebuie să fie aceeași platformă cu cea a hub-ului.

Selenium Grid utilizează un concept hub-nod în care rulați testul doar pe o singură mașină numită a butuc, dar execuția se va face de diferite mașini numite noduri.

Cum să configurați Selenium Grilă?

În această secțiune, veți folosi 2 mașini. Prima mașină va fi sistemul care va rula hub-ul, în timp ce cealaltă mașină va rula un nod. Pentru simplitate, să numim mașina în care hubul rulează „Mașina A”, în timp ce mașina în care rulează nodul va fi „Mașina B”. De asemenea, este important să rețineți adresele lor IP. Să spunem că Mașina A are o adresă IP de 192.168.1.3, în timp ce Mașina B are o adresă IP de 192.168.1.4.

Pas 1) Descărcați Selenium Server de la aici.

Înființat Selenium Grilă

Pas 2) Puteți plasa Selenium Fișier server .jar oriunde în hard disk. Dar, în scopul acestui tutorial, plasați-l pe unitatea C atât a mașinii A, cât și a mașinii B. După ce ați făcut acest lucru, ați terminat instalarea Selenium Grilă. Următorii pași vor lansa hub-ul și nodul.

Pas 3)

  • Acum vom lansa un hub. Mergeți la Mașina A. Folosind promptul de comandă, navigați la rădăcina unității Mașinii A – C, deoarece acesta este directorul în care am plasat Selenium Server.
  • Pe promptul de comandă, tastați java -jar selenium-server-standalone-2.30.0.jar -role hub
  • Hub-ul ar trebui să fie lansat cu succes. Linia de comandă ar trebui să arate similar cu imaginea de mai jos.

Înființat Selenium Grilă

Pas 4) O altă modalitate de a verifica dacă hub-ul rulează este utilizarea unui browser. Selenium Grid, în mod implicit, folosește portul 4444 al mașinii A pentru interfața sa web. Pur și simplu deschideți un browser și accesați http://localhost:4444/grid/console

Înființat Selenium Grilă

De asemenea, puteți verifica dacă Mașina B poate accesa interfața web a hub-ului lansând un browser acolo și mergând la locul unde „iporhostnameofmachineA” ar trebui să fie adresa IP sau numele de gazdă al mașinii pe care rulează hub-ul. Deoarece adresa IP a mașinii A este 192.168.1.3, atunci în browserul de pe mașina B ar trebui să tastați http://192.168.1.3:4444/grid/console

Pas 5)

  • Acum că hub-ul este deja configurat, vom lansa un nod. Accesați Mașina B și lansați un prompt de comandă acolo.
  • Navigați la rădăcina Drive C și introduceți codul de mai jos. Am folosit adresa IP 192.168.1.3 pentru că acolo rulează hub-ul. De asemenea, am folosit portul 5566, deși puteți alege orice număr de port gratuit doriți.
  • NOTĂ: Acum trebuie să dați calea driverului Gecko dacă utilizați Firefox. Aici este codul actualizat care trebuie utilizat
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

Înființat Selenium Grilă

  • Când apăsați Enter, linia dvs. de comandă ar trebui să fie similară cu imaginea de mai jos.

Înființat Selenium Grilă

Pas 6) Du-te la Selenium Grilă interfață web și reîmprospătați pagina. Ar trebui să vezi așa ceva.

Înființat Selenium Grilă

În acest moment, ați configurat deja o grilă simplă. Acum sunteți gata să rulați un test de la distanță pe Mașina B.

Când să utilizați Selenium Grilă?

Ar trebui să utilizați Selenium Grilă atunci când doriți să faceți una sau ambele dintre următoarele:

  • Rulați testele pe diferite browsere, sisteme de operare și mașini în același timp. Acest lucru va asigura că aplicația sunteți Testarea este pe deplin compatibil cu o gamă largă de combinații browser-OS.
  • Economisiți timp în execuția suitelor dvs. de testare. Dacă ai configurat Selenium Grid pentru a rula, să zicem, 4 teste la un moment dat, apoi ați putea termina întreaga suită de aproximativ 4 ori mai repede.

Grid 1.0 vs Grid 2.0

Următoarele sunt principalele diferențe între Selenium Grila 1 și 2.

Grila 1 Grila 2
Selenium Grid 1 are propria telecomandă care este diferită de Selenium Server RC. Sunt două programe diferite. Selenium Grila 2 este acum la pachet cu Selenium Fișier jar server
Trebuie să instalați și să configurați Apache Ant înainte de a putea folosi Grid 1. Nu trebuie să instalați Apache Ant în Grid 2.
Poate doar suporta Selenium Comenzi/script-uri RC. Poate suporta ambele Selenium Scripturi RC și WebDriver.
Puteți automatiza doar un browser pentru fiecare telecomandă. O singură telecomandă poate automatiza până la 5 browsere.

Selenium grila poate fi configurată în două moduri diferite; unul prin linia de comandă și celălalt prin fișierul de configurare JSON.

Proiectarea scripturilor de testare care pot rula pe grilă

Pentru a proiecta scripturi de testare care vor rula pe grilă, trebuie să folosim Capacitățile dorite si RemoteWebDriver obiecte.

  • Capacitățile dorite este folosit pentru a seta tipul de browser-ul și OS pe care le vom automatiza.
  • RemoteWebDriver este folosit pentru a seta nodul (sau mașina) împotriva căruia va rula testul nostru.

Pentru a utiliza Capacitățile dorite obiect, trebuie mai întâi să importați acest pachet

Proiectarea scripturilor de testare care pot rula pe grilă

Pentru a utiliza RemoteWebDriver obiect, trebuie să importați aceste pachete.

Proiectarea scripturilor de testare care pot rula pe grilă

Utilizarea obiectului DesiredCapabilites

Accesați interfața web a Grid și plasați cursorul pe o imagine a browserului pe care doriți să o automatizați. Luați notă de platformă, si browserName indicată de sfatul instrumentului.

Utilizarea obiectului DesiredCapabilites

În acest caz, platforma este „XP”, iar numele browserului este „Firefox. "

Vom folosi platforma și browserName în WebDriver-ul nostru, așa cum se arată mai jos (desigur că trebuie să importați mai întâi pachetele necesare).

Utilizarea obiectului DesiredCapabilites

Utilizarea obiectului RemoteWebDriver

Importați pachetele necesare pentru RemoteWebDriver și apoi treceți obiectul DesiredCapabilities pe care l-am creat mai sus ca parametru pentru obiectul RemoteWebDriver.

Utilizarea obiectului RemoteWebDriver

Rularea unui exemplu de caz de testare pe grilă

Mai jos este un WebDriver simplu Testng cod pe care îl puteți crea Eclipse pe Mașina A. Odată ce îl rulați, automatizarea va fi efectuată pe Mașina 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()); }
}

Testul ar trebui să treacă.

Rularea unui exemplu de caz de testare pe grilă Rularea unui exemplu de caz de testare pe grilă

Selenium configurarea grilei folosind fișierul JSON

JSON înseamnă Javascript Notarea obiectului. Este un format standard utilizat pentru schimbul de date între browser și serverul web. Selenium are un fișier de configurare JSON încorporat care poate fi folosit pentru a configura grila de seleniu.

Mai jos sunt pașii pentru a configura grila de seleniu folosind fișierul de configurare JSON.

Pas 1) Descărcați codul pentru fișierul de configurare JSON folosind calea de mai jos

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

Iată codul

{
	  "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
}

Pas 2) Copiați și inserați codul într-un editor de text, cum ar fi Notepad cu extensia „.json”

Pas 3) Lansați hub-ul folosind comanda de mai jos folosind promptul de comandă

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

NOTĂ: Selenium fișier jar autonom și fișierul json trebuie să fie prezent în același director

Pas 4) Va apărea ecranul de mai jos, care indică faptul că hub-ul a fost configurat cu succes

Selenium Configurare grilă folosind fișierul JSON

Pas 5) Deschideți browserul web și încercați să vă conectați la următoarele URL

http://192.168.43.223:4444/grid/console

NOTĂ: URL poate varia de la mașină la mașină. URL urmat de „Nodurile ar trebui să se înregistreze la” pe ecranul de mai sus.

Pas 6) Va apărea ecranul Grid Console care indică faptul că hub-ul este pornit și funcționează

Selenium Configurare grilă folosind fișierul JSON

Configurați NODES folosind JSON

Pas 1) Descărcați exemplul de fișier de configurare a nodului furnizat de Selenium folosind cele de mai jos URL

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

NOTĂ: DACĂ UTILIZAȚI SELENIUM 3.0 SAU SAU MAI UP, TREBUIE UTILIZAT FIȘIERUL JSON DE MAI JOS

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

Pas 2) Copiați și inserați codul într-un editor de text, cum ar fi Notepad și salvați fișierul cu extensia „.json”

Pas 3)

Rulați comanda de mai jos la promptul de comandă

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

NOTĂ: Înainte de a rula comanda, asigurați-vă că driverele pentru fiecare dintre browsere au fost descărcate în directorul local al mașinii

Pas 4) Ecranul de mai jos va apărea când tasta Enter este apăsată

Configurați noduri folosind JSON

Pas 5) Navigați la consola grilă pentru a verifica dacă nodurile au fost configurate cu succes

Configurați noduri folosind JSON

Browserele sunt afișate pe consola grilă. Prin urmare, putem fi siguri că nodurile sunt configurate cu succes.

Exemple de cazuri de testare Activate Selenium Grilă:

 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 = "https://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");
         }

     }

 }

Codul de mai sus lansează browserul Chrome și navighează către URL specificat în „bază”URLvariabilă '. A verificat că pe pagină este afișat un link cu numele „Mobile Testing”

URL pe „nod”URLVariabila ' poate fi modificată pentru a reflecta adresa IP a mașinii la distanță. Rezultatul testului poate fi verificat pe adresa implicită TestNG raport generat

Întrebări frecvente

Hub-ul este singura mașină centrală unde încărcați testele și gestionați grila. Nodurile sunt mașinile care execută efectiv testele pe anumite combinații de browser și sisteme de operare. O grilă are un hub și unul sau mai multe noduri.

Grid 1 folosește o telecomandă separată și necesită Apache Ant, suportând doar Selenium Scripturi RC și un browser per control. Grid 2 este inclus în pachetul Selenium Fișier jar de server, nu necesită Ant și suportă atât scripturi RC, cât și WebDriver.

Creați un obiect DesiredCapabilities, setați browserName și platformă, apoi transmiteți-l unui RemoteWebDriver indicat către nodul URLGrila direcționează testul către un nod corespunzător pentru browserul și sistemul de operare respectiv.

Inteligența artificială poate prioritiza și paraleliza rularea testelor, poate prezice teste instabile, poate echilibra sarcina între noduri și poate repara automat locatoarele defecte. Acest lucru reduce timpul de execuție și efortul de întreținere pe grile mari care rulează numeroase combinații browser-sistem de operare.

Da. Instrumentele de inteligență artificială pot recomanda un număr optim de noduri, pot genera configurații JSON, pot scala automat grilele cloud pe baza lungimii cozii și pot detecta capacitatea subutilizată.ping echipele rulează suite mari eficient, fără reglaje manuale.

Rezumați această postare cu: