Selenium Tutorial sulla griglia: configurazione di un hub e di un nodo

⚡ Riepilogo intelligente

Selenium Grid esegue più test in parallelo su diversi browser, sistemi operativi e macchine utilizzando un'architettura a nodi. L'hub carica i test su una macchina mentre i nodi li eseguono sulle altre, consentendo una copertura cross-browser più rapida tramite configurazione da riga di comando o JSON.

  • 🧩 Griglia definita: Esegue test in parallelo su diversi browser, sistemi operativi e macchine tramite un hub e dei nodi.
  • 🎯 hub: L'unica macchina centrale su cui caricare i test; un solo hub per griglia.
  • nodi: Una o più macchine che eseguono effettivamente i test su piattaforme diverse.
  • ⚙️ Setup: Avviare il Selenium File JAR del server con i ruoli -role hub e -role node, oppure utilizzare un file di configurazione JSON.
  • 🧪 Script di prova: Utilizza DesiredCapabilities e RemoteWebDriver per specificare un browser, un sistema operativo e un nodo.
  • Quando usare: Ampie verifiche di compatibilità tra browser e sistema operativo ed esecuzione parallela più rapida delle suite di test.

Selenium Tutorial sulla griglia

Cosa è Selenium Griglia?

Selenium Griglia è una parte del Selenium Suite specializzata nell'esecuzione di più test su diversi browser, sistemi operativi e macchine in parallelo. Si ottiene instradando i comandi delle istanze del browser remoto in cui un server funge da hub. Un utente deve configurare il server remoto per eseguire i test.

Selenium Grid ha 2 versioni: la vecchia Grid 1 e la più recente Grid 2. Ci concentreremo solo su Grid 2 perché Grid 1 verrà gradualmente deprecato dal Selenium Squadra.

Selenium Griglia Architectura

Selenium La griglia ha un hub e un nodo Architectura.

Selenium Griglia Architectura
Selenium Griglia Architectura

Hub

  • L'hub è il punto centrale in cui carichi i tuoi test.
  • Dovrebbe esserci un solo hub in una griglia.
  • L'hub viene avviato solo su una singola macchina, ad esempio un computer il cui sistema operativo è Windows 7 e il cui browser è IE.
  • La macchina contenente l'hub è il luogo in cui verranno eseguiti i test, ma vedrai il browser automatizzato sul nodo.

Nodes

  • I nodi sono i Selenium istanze che eseguiranno i test caricati sull'hub.
  • Possono esserci uno o più nodi in una griglia.
  • I nodi possono essere avviati su più macchine con piattaforme e browser diversi.
  • Non è necessario che le macchine che eseguono i nodi abbiano la stessa piattaforma di quella dell'hub.

Selenium Grid utilizza un concetto di nodo hub in cui esegui il test solo su una singola macchina chiamata a Hub, ma l'esecuzione verrà eseguita da diverse macchine chiamate nodi.

Come impostare Selenium Griglia?

In questa sezione utilizzerai 2 macchine. La prima macchina sarà il sistema che eseguirà l'hub mentre l'altra macchina eseguirà un nodo. Per semplicità, chiamiamo la macchina su cui funziona l'hub come “Macchina A” mentre la macchina su cui gira il nodo sarà “Macchina B”. È anche importante annotare i loro indirizzi IP. Diciamo che la Macchina A ha un indirizzo IP 192.168.1.3 mentre la Macchina B ha un IP 192.168.1.4.

Passo 1) Scarica la Selenium Server da Qui..

Impostare Selenium Griglia

Passo 2) Puoi posizionare il Selenium File .jar del server ovunque nel tuo disco rigido. Ma ai fini di questo tutorial, posizionalo sull'unità C sia della Macchina A che della Macchina B. Dopo averlo fatto, hai finito di installare Selenium Griglia. I seguenti passaggi avvieranno l'hub e il nodo.

Passo 3)

  • Ora lanceremo un hub. Vai alla Macchina A. Utilizzando il prompt dei comandi, vai alla radice dell'unità Macchina A - C, perché quella è la directory in cui abbiamo inserito il Selenium Server.
  • Al prompt dei comandi, digitare java -jar selenium-server-standalone-2.30.0.jar -ruolo hub
  • L'hub dovrebbe essere avviato correttamente. Il prompt dei comandi dovrebbe essere simile all'immagine seguente.

Impostare Selenium Griglia

Passo 4) Un altro modo per verificare se l'hub è in esecuzione consiste nell'utilizzare un browser. Selenium La griglia, per impostazione predefinita, utilizza la porta 4444 della Macchina A per la sua interfaccia web. Basta aprire un browser e andare su http://localhost:4444/grid/console

Impostare Selenium Griglia

Inoltre, puoi verificare se la Macchina B può accedere all'interfaccia web dell'hub avviando un browser e andando dove "iporhostnameofmachineA" dovrebbe essere l'indirizzo IP o il nome host della macchina su cui è in esecuzione l'hub. Poiché l'indirizzo IP della Macchina A è 192.168.1.3, nel browser della Macchina B dovresti digitare http://192.168.1.3:4444/grid/console

Passo 5)

  • Ora che l'hub è già configurato, lanceremo un nodo. Vai alla Macchina B e avvia un prompt dei comandi da lì.
  • Passare alla radice dell'unità C e digitare il codice seguente. Abbiamo utilizzato l'indirizzo IP 192.168.1.3 perché è lì che è in esecuzione l'hub. Abbiamo utilizzato anche la porta 5566, anche se puoi scegliere qualsiasi numero di porta libera che desideri.
  • NOTA: ora devi fornire il percorso al driver Gecko se lo usi Firefox. Ecco il codice aggiornato che deve essere utilizzato
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

Impostare Selenium Griglia

  • Quando premi Invio, il prompt dei comandi dovrebbe essere simile all'immagine seguente.

Impostare Selenium Griglia

Passo 6) Vai Selenium Griglia dell'interfaccia web e aggiorna la pagina. Dovresti vedere qualcosa di simile.

Impostare Selenium Griglia

A questo punto hai già configurato una griglia semplice. Ora sei pronto per eseguire un test in remoto sulla Macchina B.

Quando usare Selenium Griglia?

Dovresti usare Selenium Griglia quando vuoi fare una o entrambe le seguenti cose:

  • Esegui i tuoi test su diversi browser, sistemi operativi e macchine contemporaneamente. Ciò garantirà che l'applicazione che stai utilizzando Collaudo è completamente compatibile con un'ampia gamma di combinazioni browser-sistema operativo.
  • Risparmia tempo nell'esecuzione delle tue suite di test. Se imposti Selenium Griglia per eseguire, diciamo, 4 test alla volta, quindi sarai in grado di completare l'intera suite circa 4 volte più velocemente.

Griglia 1.0 contro Griglia 2.0

Di seguito sono riportate le principali differenze tra Selenium Griglia 1 e 2.

Grid 1 Grid 2
Selenium Grid 1 ha il proprio telecomando diverso da quello Selenium Server RC. Sono due programmi diversi. Selenium Grid 2 è ora in bundle con Selenium File jar del server
È necessario installare e configurare Apache Formica prima di poter utilizzare la Griglia 1. Non è necessario installare Apache Ant in Grid 2.
Può solo supportare Selenium Comandi/script RC. Può supportare entrambi Selenium Script RC e WebDriver.
Puoi automatizzare un solo browser per telecomando. Un telecomando può automatizzare fino a 5 browser.

Selenium la griglia può essere impostata in due modi diversi; uno tramite la riga di comando e l'altro tramite il file di configurazione JSON.

Progettazione di script di test che possano essere eseguiti sulla griglia

Per progettare script di test che verranno eseguiti sulla griglia, dobbiamo utilizzare Capacità desiderate e RemoteWebDriver oggetti.

  • Capacità desiderate viene utilizzato per impostare il tipo di del browser and OS che automatizzeremo.
  • RemoteWebDriver viene utilizzato per impostare su quale nodo (o macchina) verrà eseguito il nostro test.

Per utilizzare l' Capacità desiderate oggetto, devi prima importare questo pacchetto

Progettazione di script di test che possano essere eseguiti sulla griglia

Per utilizzare l' RemoteWebDriver oggetto, è necessario importare questi pacchetti.

Progettazione di script di test che possano essere eseguiti sulla griglia

Utilizzo dell'oggetto DesiredCapabilites

Vai all'interfaccia web di Grid e passa il mouse su un'immagine del browser che desideri automatizzare. Prendi nota del piattaforma, e browserName mostrato dal tooltip.

Utilizzo dell'oggetto DesiredCapabilites

In questo caso, la piattaforma è “XP” e il nome del browser è “Firefox. "

Utilizzeremo la piattaforma e il browserName nel nostro WebDriver come mostrato di seguito (ovviamente è necessario prima importare i pacchetti necessari).

Utilizzo dell'oggetto DesiredCapabilites

Utilizzando l'oggetto RemoteWebDriver

Importa i pacchetti necessari per RemoteWebDriver e quindi passa l'oggetto DesiredCapabilities che abbiamo creato in precedenza come parametro per l'oggetto RemoteWebDriver.

Utilizzo dell'oggetto RemoteWebDriver

Esecuzione di un caso di test di esempio sulla griglia

Di seguito è riportato un semplice WebDriver Test codice in cui puoi creare Eclipse sulla Macchina A. Una volta eseguita, l'automazione verrà eseguita sulla Macchina 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()); }
}

Il test dovrebbe essere superato.

Esecuzione di un caso di test campione sulla griglia Esecuzione di un caso di test campione sulla griglia

Selenium configurazione della griglia utilizzando il file JSON

JSON sta per Javascript Notazione degli oggetti. È un formato standard utilizzato per lo scambio di dati tra il browser e il server web. Selenium dispone di un file di configurazione JSON integrato che può essere utilizzato per impostare la griglia Selenium.

Di seguito sono riportati i passaggi per configurare la griglia del selenio utilizzando il file di configurazione JSON.

Passo 1) Scarica il codice per il file di configurazione JSON utilizzando il percorso seguente

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

Ecco il codice

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

Passo 2) Copia e incolla il codice su un editor di testo come Blocco note con l'estensione ".json"

Passo 3) Avviare l'hub utilizzando il comando seguente utilizzando il prompt dei comandi

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

NOTA: Selenium il file jar autonomo e il file json devono essere presenti nella stessa directory

Passo 4) Apparirà la schermata seguente che indica che l'hub è stato configurato correttamente

Selenium Configurazione della griglia utilizzando il file JSON

Passo 5) Apri il browser web e prova a connetterti al seguente indirizzo: URL

http://192.168.43.223:4444/grid/console

NOTA: Migliori URL può variare da macchina a macchina. URL seguito da 'I nodi devono registrarsi a' nella schermata precedente deve essere utilizzato.

Passo 6) Verrà visualizzata la schermata Grid Console che indica che l'hub è attivo e funzionante

Selenium Configurazione della griglia utilizzando il file JSON

Configura i NODI utilizzando JSON

Passo 1) Scarica il file di configurazione del nodo di esempio fornito da Selenium utilizzando quanto segue URL

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

NOTA: SE SI UTILIZZA SELENIUM 3.0 O SUPERIORE, È NECESSARIO UTILIZZARE IL FILE JSON SOTTO

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

Passo 2) Copia e incolla il codice in un editor di testo come Blocco note e salva il file con l'estensione ".json"

Passo 3)

Esegui il comando seguente sul prompt dei comandi

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

NOTA: Prima di eseguire il comando, assicurati che i driver per ciascuno dei browser siano stati scaricati nella directory del computer locale

Passo 4) La schermata seguente verrà visualizzata quando si preme il tasto Invio

Configura i nodi utilizzando JSON

Passo 5) Passare alla console della griglia per verificare se i nodi sono stati configurati correttamente

Configura i nodi utilizzando JSON

I browser vengono visualizzati sulla console della griglia. Quindi possiamo essere sicuri che i nodi siano configurati correttamente.

Casi di test di esempio attivi Selenium Griglia:

 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");
         }

     }

 }

Il codice sopra riportato avvia il browser Chrome e naviga verso URL specificato nella 'baseURL' variabile. Ha verificato che un link denominato 'Mobile Testing' venga visualizzato sulla pagina

URL sul 'nodoURLLa variabile ' può essere modificata per riflettere l'indirizzo IP della macchina remota. Il risultato del test può essere verificato sull'impostazione predefinita TestNG rapporto generato

DOMANDE FREQUENTI

L'hub è la singola macchina centrale in cui si caricano i test e si gestisce la griglia. I nodi sono le macchine che eseguono effettivamente i test su specifiche combinazioni di browser e sistema operativo. Una griglia è composta da un hub e uno o più nodi.

Grid 1 utilizza un controllo remoto separato e richiede Apache Ant, supportando solo Selenium Script RC e un browser per controllo. Grid 2 è incluso nel pacchetto Selenium File JAR del server, non richiede Ant e supporta sia script RC che WebDriver.

Crea un oggetto DesiredCapabilities, imposta il suo browserName e la piattaforma, quindi passalo a un RemoteWebDriver puntato al nodo URLLa griglia instrada il test al nodo corrispondente per quel browser e sistema operativo.

L'intelligenza artificiale può dare priorità e parallelizzare le esecuzioni dei test, prevedere test instabili, bilanciare il carico tra i nodi e riparare automaticamente i localizzatori danneggiati. Ciò riduce i tempi di esecuzione e gli sforzi di manutenzione su griglie di grandi dimensioni che eseguono numerose combinazioni di browser e sistemi operativi.

Sì. Gli strumenti di IA possono consigliare il numero ottimale di nodi, generare configurazioni JSON, scalare automaticamente le griglie cloud in base alla lunghezza della coda e rilevare la capacità sottoutilizzata, aiutandoping I team gestiscono suite di grandi dimensioni in modo efficiente senza necessità di regolazioni manuali.

Riassumi questo post con: