Selenium Tutorial sulla griglia: configurazione di un hub e di un nodo (esempio)

Che cos'è la 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 Testing è 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 le RemoteWebDriver oggetti.

  • Capacità desiderate viene utilizzato per impostare il tipo di del browser e 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 le 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 all'URL seguente

http://192.168.43.223:4444/grid/console

NOTA: L'URL può variare da macchina a macchina. È necessario utilizzare l'URL seguito da "I nodi devono registrarsi su" nella schermata precedente.

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 l'URL seguente

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

     }

 }

Il codice precedente avvia il browser Chrome e passa all'URL specificato nella variabile "baseURL". Ha verificato che nella pagina venga visualizzato il nome del collegamento "Test mobile".

L'URL sulla variabile "nodeURL" può essere modificato per riflettere l'indirizzo IP della macchina remota. Il risultato del test può essere verificato per impostazione predefinita TestNG rapporto generato

Sommario

  • Selenium Grid viene utilizzato per eseguire più test contemporaneamente su diversi browser e piattaforme.
  • La griglia utilizza il concetto di nodo hub.
  • L'hub è il punto centrale in cui carichi i tuoi test.
  • I nodi sono i Selenium istanze che eseguiranno i test caricati sull'hub.
  • Per installare Selenium Grid, devi solo scaricare il file Selenium File jar del server: lo stesso file utilizzato durante l'esecuzione Selenium Prove RC.
  • Esistono 2 modi per verificare se l'hub è in esecuzione: uno tramite il prompt dei comandi e l'altro tramite un browser.
  • Per eseguire script di test sulla griglia, è necessario utilizzare gli oggetti DesiredCapabilities e RemoteWebDriver.
  • DesiredCapabilites viene utilizzato per impostare il tipo di browser e sistema operativo che automatizzeremo.
  • RemoteWebDriver viene utilizzato per impostare su quale nodo (o macchina) verrà eseguito il nostro test.