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

Wat is seleniumraster?

Selenium rooster is een onderdeel van de Selenium Suite dat gespecialiseerd is in het parallel uitvoeren van meerdere tests in verschillende browsers, besturingssystemen en machines. 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 het Selenium Team.

Selenium rooster Architectuur

Selenium Grid heeft een hub en een knooppunt Archistructuur.

Selenium rooster Architectuur
Selenium rooster 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-instanties 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 een enkele machine genaamd a naaf, maar de uitvoering zal worden gedaan door verschillende machines genaamd knooppunten

Hoe Selenium Grid instellen?

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-server van hier),.

Selenium-raster instellen

Stap 2) U kunt het Selenium Server .jar-bestand overal op uw harde schijf plaatsen. Maar voor het doel van deze tutorial plaats je het op de C-schijf van zowel Machine A als Machine B. Nadat je dit hebt gedaan, ben je nu klaar met het installeren van Selenium Grid. De volgendewing stappen starten de hub en het knooppunt.

Stap 3)

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

Selenium-raster instellen

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

Selenium-raster instellen

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

Selenium-raster instellen

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

Selenium-raster instellen

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

Selenium-raster instellen

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 Selenium Grid gebruiken?

U moet Selenium Grid gebruiken als u een van de volgende stappen of beide wilt uitvoerenwing:

  • Voer uw tests tegelijkertijd uit met verschillende browsers, besturingssystemen en machines. 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 u Selenium Grid instelt om bijvoorbeeld vier tests tegelijk uit te voeren, kunt u de hele suite ongeveer vier keer sneller voltooien.

Raster 1.0 versus raster 2.0

Following zijn de belangrijkste verschillen tussen Selenium Grid 1 en 2.

Grid 1 Grid 2
Selenium Grid 1 heeft een eigen afstandsbediening die verschilt van de Selenium RC-server. Het zijn twee verschillende programma's. Selenium Grid 2 is nu gebundeld met het 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 Selenium RC-opdrachten/scripts ondersteunen. Kan zowel Selenium RC- als WebDriver-scripts ondersteunen.
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 Testng 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 Object Notation. 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 het seleniumraster in te stellen.

Hieronder vindt u de stappen om het seleniumraster te configureren met behulp van het 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 in dezelfde map aanwezig zijn

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

Selenium Grid-configuratie 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 Grid-configuratie met behulp van JSON-bestand

Configureer NODES met JSON

Stap 1) Download het voorbeeldknooppuntconfiguratiebestand van Selenium met behulp van de 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 rasterconsole. Daarom kunnen we er zeker van zijn dat knooppunten succesvol worden geconfigureerd.

Voorbeeldtestgevallen op 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 'baseURL'-variabele. Er werd geverifieerd dat de linknaam 'Mobiel testen' 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 worden geverifieerd op het standaard gegenereerde TestNG-rapport

Samengevat

  • Selenium Grid wordt gebruikt om meerdere tests tegelijkertijd uit te voerenneomeestal 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-instanties die de tests uitvoeren die u op de hub hebt geladen.
  • Om Selenium Grid te installeren, hoeft u alleen het Selenium Server jar-bestand te downloaden – hetzelfde bestand dat wordt gebruikt bij het uitvoeren van Selenium RC-tests.
  • 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.