Selenium Grid-tutorial: een hub en knooppunt instellen (voorbeeld)

Wat is Selenium Rooster?

Selenium Raster is een onderdeel van de Selenium Suite die gespecialiseerd is in het uitvoeren van meerdere tests op verschillende browsers, besturingssystemen en machines parallel. Dit wordt bereikt door de opdrachten van externe browserinstanties te routeren waarbij een server als hub fungeert. Een gebruiker moet de externe server configureren om de tests uit te voeren.

Selenium Grid heeft twee versies: het oudere Grid 2 en het nieuwere Grid 1. We zullen ons alleen concentreren op Grid 2 omdat Grid 2 geleidelijk wordt verouderd door de Selenium Team.

Selenium Raster Architectuur

Selenium Grid heeft een hub en een knooppunt Archistructuur.

Selenium Raster Architectuur
Selenium Raster Architectuur

Naaf

  • De hub is het centrale punt waar u uw tests inlaadt.
  • Er mag slechts één hub in een netwerk aanwezig zijn.
  • De hub wordt alleen op één enkele machine gestart, bijvoorbeeld een computer waarvan het besturingssysteem is Windows 7 en wiens browser IE is.
  • De machine met de hub is waar de tests worden uitgevoerd, maar u zult zien dat de browser op het knooppunt wordt geautomatiseerd.

Nodes

  • Knooppunten zijn de Selenium instances die de tests uitvoeren die u op de hub hebt geladen.
  • Er kunnen een of meer knooppunten in een raster zijn.
  • Knooppunten kunnen op meerdere machines met verschillende platforms en browsers worden gestart.
  • De machines waarop de knooppunten draaien hoeven niet hetzelfde platform te zijn als dat van de hub.

Selenium Grid maakt gebruik van een hub-node-concept waarbij u de test alleen uitvoert op één enkele machine, genaamd a naaf, maar de uitvoering zal worden gedaan door verschillende machines genaamd knooppunten

Hoe instellen Selenium Rooster?

In dit gedeelte gebruikt u 2 machines. De eerste machine zal het systeem zijn dat de hub zal draaien, terwijl de andere machine een knooppunt zal draaien. Laten we voor de eenvoud de machine waarop de hub draait ‘Machine A’ noemen, terwijl de machine waarop het knooppunt draait ‘Machine B’ zal zijn. Het is ook belangrijk om hun IP-adressen te noteren. Laten we zeggen dat machine A het IP-adres 192.168.1.3 heeft, terwijl machine B het IP-adres 192.168.1.4 heeft.

Stap 1) Download de Selenium Serveerster van hier.

Instellen Selenium Raster

Stap 2) Je kunt de Selenium Server .jar-bestand waar dan ook op uw harde schijf. Maar voor het doel van deze tutorial plaatst u deze op de C-schijf van zowel Machine A als Machine B. Nadat u dit hebt gedaan, bent u nu klaar met de installatie Selenium Grid. De volgende stappen zullen de hub en de node lanceren.

Stap 3)

  • We gaan nu een hub lanceren. Ga naar Machine A. Navigeer met behulp van de opdrachtprompt naar de hoofdmap van de C-schijf van Machine A, want dat is de map waar we de Selenium Server.
  • Typ op de opdrachtprompt java -jar selenium-server-standalone-2.30.0.jar -role hub
  • De hub zou met succes gelanceerd moeten worden. Uw opdrachtprompt zou er ongeveer zo uit moeten zien als de onderstaande afbeelding.

Instellen Selenium Raster

Stap 4) Een andere manier om te controleren of de hub actief is, is door een browser te gebruiken. Selenium Grid gebruikt standaard poort 4444 van Machine A voor zijn webinterface. Open gewoon een browser en ga naar http://localhost:4444/grid/console

Instellen Selenium Raster

U kunt ook controleren of Machine B toegang heeft tot de webinterface van de hub door daar een browser te starten en naar de plaats te gaan waar “iporhostnameofmachineA” het IP-adres of de hostnaam moet zijn van de machine waarop de hub draait. Aangezien het IP-adres van machine A 192.168.1.3 is, moet u in de browser op machine B typen http://192.168.1.3:4444/grid/console

Stap 5)

  • Nu de hub al is opgezet, gaan we een knooppunt lanceren. Ga naar Machine B en start daar een opdrachtprompt.
  • Navigeer naar de hoofdmap van Drive C en typ de onderstaande code. We gebruikten het IP-adres 192.168.1.3 omdat daar de hub draait. We gebruikten ook poort 5566, hoewel u elk gewenst gratis poortnummer kunt kiezen.
  • OPMERKING: U moet nu het pad naar het Gecko-stuurprogramma opgeven als u dit gebruikt Firefox. Hier is bijgewerkte code die moet worden gebruikt
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

Instellen Selenium Raster

  • Wanneer u op Enter drukt, zou uw opdrachtprompt er ongeveer zo uit moeten zien als in de onderstaande afbeelding.

Instellen Selenium Raster

Stap 6) Ga naar uw Selenium Raster de webinterface en vernieuw de pagina. Je zou zoiets als dit moeten zien.

Instellen Selenium Raster

Op dit punt hebt u al een eenvoudig raster geconfigureerd. U bent nu klaar om op afstand een test uit te voeren op Machine B.

Wanneer te gebruiken Selenium Rooster?

Je zou ... moeten gebruiken Selenium Raster wanneer u een of beide van de volgende handelingen wilt uitvoeren:

  • Voer uw tests uit op verschillende browsers, besturingssystemen en machines tegelijkertijd. Dit zorgt ervoor dat de toepassing die u bent Testen is volledig compatibel met een breed scala aan browser-OS-combinaties.
  • Bespaar tijd bij de uitvoering van uw testsuites. Als je het hebt ingesteld Selenium Raster om bijvoorbeeld 4 tests tegelijk uit te voeren, dan zou je de hele suite ongeveer 4 keer sneller kunnen voltooien.

Raster 1.0 versus raster 2.0

Hieronder staan ​​de belangrijkste verschillen tussen Selenium Raster 1 en 2.

Grid 1 Grid 2
Selenium Grid 1 heeft een eigen afstandsbediening die anders is dan de Selenium RC-server. Het zijn twee verschillende programma's. Selenium Grid 2 is nu gebundeld met de Selenium Server jar-bestand
U moet installeren en configureren apache Ant eerst voordat u Grid 1 kunt gebruiken. U hoeft Apache Ant niet te installeren in Grid 2.
Kan alleen maar ondersteunen Selenium RC-opdrachten/scripts. Kan beide ondersteunen Selenium RC- en WebDriver-scripts.
Per afstandsbediening kunt u slechts één browser automatiseren. Eén afstandsbediening kan maximaal 5 browsers automatiseren.

Selenium grid kan op twee verschillende manieren worden opgezet; één via de opdrachtregel en de andere via het JSON-configuratiebestand.

Testscripts ontwerpen die op het raster kunnen worden uitgevoerd

Om testscripts te ontwerpen die op het raster kunnen worden uitgevoerd, moeten we gebruiken Gewenste capaciteiten en RemoteWebDriver voorwerpen.

  • Gewenste capaciteiten wordt gebruikt om het type in te stellen browser en OS dat we gaan automatiseren.
  • RemoteWebDriver wordt gebruikt om in te stellen op welk knooppunt (of machine) onze test zal draaien.

Om het gebruik Gewenste capaciteiten object, moet u dit pakket eerst importeren

Testscripts ontwerpen die op het raster kunnen worden uitgevoerd

Om het gebruik RemoteWebDriver object, moet u deze pakketten importeren.

Testscripts ontwerpen die op het raster kunnen worden uitgevoerd

Het DesiredCapabilites-object gebruiken

Ga naar de webinterface van Grid en plaats de muisaanwijzer op een afbeelding van de browser die u wilt automatiseren. Houd rekening met de platform. en browsernaam getoond door de tooltip.

Het DesiredCapabilites-object gebruiken

In dit geval is het platform “XP” en de browsernaam “Firefox. '

We gebruiken het platform en de browsernaam in onze WebDriver zoals hieronder weergegeven (uiteraard moet u eerst de benodigde pakketten importeren).

Het DesiredCapabilites-object gebruiken

Het RemoteWebDriver-object gebruiken

Importeer de benodigde pakketten voor RemoteWebDriver en geef vervolgens het DesiredCapabilities-object door dat we hierboven hebben gemaakt als parameter voor het RemoteWebDriver-object.

Het RemoteWebDriver-object gebruiken

Een voorbeeldtestcase uitvoeren op het raster

Hieronder vindt u een eenvoudige webdriver Testen code waarin u kunt aanmaken Eclipse op Machine A. Zodra u het uitvoert, wordt de automatisering uitgevoerd op Machine 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()); } 
} 

De test zou moeten slagen.

Een voorbeeldtestcase uitvoeren op het raster Een voorbeeldtestcase uitvoeren op het raster

Selenium rasterconfiguratie met behulp van JSON-bestand

JSON staat voor Javascript Objectnotatie. Het is een standaardformaat dat wordt gebruikt voor de uitwisseling van gegevens tussen de browser en de webserver. Selenium heeft een ingebouwd JSON-configuratiebestand dat kan worden gebruikt om Selenium Grid in te stellen.

Hieronder vindt u de stappen voor het configureren van Selenium Grid met behulp van een JSON-configuratiebestand.

Stap 1) Download de code voor het JSON-configuratiebestand via het onderstaande pad

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

Hier is de code

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

Stap 2) Kopieer en plak de code in een teksteditor zoals Kladblok met de extensie '.json'

Stap 3)Start de hub met behulp van de onderstaande opdracht via de opdrachtprompt

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

NOTITIE: Selenium stand-alone jar-bestand en het json-bestand moeten aanwezig zijn in dezelfde map

Stap 4) Het onderstaande scherm verschijnt, wat aangeeft dat de hub succesvol is ingesteld

Selenium Rasterconfiguratie met behulp van JSON-bestand

Stap 5) Open een webbrowser en probeer verbinding te maken met de onderstaande URL

http://192.168.43.223:4444/grid/console

NOTITIE: De URL kan variëren van machine tot machine. De URL gevolgd door 'Nodes moeten zich registreren bij' op het bovenstaande scherm moet worden gebruikt.

Stap 6) Het Grid Console-scherm verschijnt, wat aangeeft dat de hub actief is

Selenium Rasterconfiguratie met behulp van JSON-bestand

Configureer NODES met JSON

Stap 1) Download het voorbeeldknooppuntconfiguratiebestand van Selenium via onderstaande URL

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

NOTITIE: ALS U SELENIUM 3.0 OF HOGER GEBRUIKT, MOET HET ONDERSTAANDE JSON-BESTAND WORDEN GEBRUIKT

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

Stap 2) Kopieer en plak de code in een teksteditor zoals Kladblok en sla het bestand op met de extensie '.json'

Stap 3)

Voer de onderstaande opdracht uit op de opdrachtprompt

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

NOTITIE: Voordat u de opdracht uitvoert, moet u ervoor zorgen dat de stuurprogramma's voor elk van de browsers zijn gedownload naar de lokale machinemap

Stap 4) Het onderstaande scherm verschijnt wanneer u op de Enter-toets drukt

Configureer knooppunten met JSON

Stap 5) Navigeer naar de rasterconsole om te controleren of de knooppunten succesvol zijn geconfigureerd

Configureer knooppunten met JSON

De browsers worden weergegeven op de gridconsole. Daarom kunnen we er zeker van zijn dat de nodes succesvol zijn geconfigureerd.

Voorbeeldtestgevallen ingeschakeld Selenium Raster:

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

     }

 }

De bovenstaande code start de Chrome-browser en navigeert naar de URL die is opgegeven in de variabele 'baseURL'. Het verifieert dat een link met de naam 'Mobile Testing' op de pagina wordt weergegeven

De URL op de 'nodeURL'-variabele kan worden gewijzigd om het IP-adres van de externe machine weer te geven. Het testresultaat kan standaard worden geverifieerd TestNG rapport gegenereerd

Samenvatting

  • Selenium Grid wordt gebruikt om meerdere tests tegelijkertijd uit te voeren op verschillende browsers en platforms.
  • Grid maakt gebruik van het hub-node-concept.
  • De hub is het centrale punt waar u uw toetsen laadt.
  • Knooppunten zijn de Selenium instances die de tests uitvoeren die u op de hub hebt geladen.
  • Om te installeren Selenium Grid, je hoeft alleen maar het Selenium Server jar-bestand – hetzelfde bestand dat wordt gebruikt bij running Selenium RC-testen.
  • Er zijn twee manieren om te verifiëren of de hub actief is: de ene was via de opdrachtprompt en de andere was via een browser.
  • Om testscripts op het Grid uit te voeren, moet u de objecten DesiredCapabilities en RemoteWebDriver gebruiken.
  • DesiredCapabilites wordt gebruikt om het type browser en besturingssysteem in te stellen dat we gaan automatiseren.
  • RemoteWebDriver wordt gebruikt om in te stellen op welk knooppunt (of machine) onze test zal draaien.