Selenium Grid-handleiding: Een hub en knooppunt instellen

⚡ Slimme samenvatting

Selenium Grid voert meerdere tests parallel uit op verschillende browsers, besturingssystemen en machines met behulp van een hub-and-node-architectuur. De hub laadt de tests op één machine, terwijl de nodes ze op andere machines uitvoeren. Dit maakt snellere dekking over verschillende browsers mogelijk via configuratie via de commandoregel of JSON.

  • 🧩 Raster gedefinieerd: Voert tests parallel uit op verschillende browsers, besturingssystemen en machines via een hub en knooppunten.
  • 🎯 hub: De centrale machine waarop je belastingstests uitvoert; slechts één hub per netwerk.
  • knooppunten: Een of meer machines die de tests daadwerkelijk uitvoeren op verschillende platforms.
  • ⚙️ Setup: Start de Selenium Gebruik een server-JAR-bestand met de rollen -role hub en -role node, of een JSON-configuratiebestand.
  • 🧪 Testscripts: Gebruik DesiredCapabilities en RemoteWebDriver om een ​​browser, besturingssysteem en node te targeten.
  • Wanneer te gebruiken: Uitgebreide compatibiliteitscontroles tussen browser en besturingssysteem en snellere parallelle uitvoering van testsuites.

Selenium Rasterhandleiding

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 onderstaande website. URL

http://192.168.43.223:4444/grid/console

NOTITIE: De URL kan per machine verschillen. URL Vervolgens moet 'Knooppunten moeten zich registreren bij' op het bovenstaande scherm 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 gebruik het 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 = "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");
         }

     }

 }

De bovenstaande code start de Chrome-browser en navigeert naar de pagina. URL gespecificeerd in de 'basis'URL' variabele. Het controleerde of de linknaam 'Mobile Testing' op de pagina wordt weergegeven.

URL op het knooppuntURLDe variabele kan worden aangepast om het IP-adres van de externe machine weer te geven. Het testresultaat kan worden geverifieerd op de standaardinstellingen. TestNG rapport gegenereerd

Veelgestelde vragen

De hub is de centrale machine waarop je tests uitvoert en het grid beheert. Nodes zijn de machines die de tests daadwerkelijk uitvoeren op specifieke combinaties van browsers en besturingssystemen. Een grid bestaat uit één hub en één of meer nodes.

Grid 1 maakt gebruik van een aparte afstandsbediening en vereist Apache Ant, dat alleen ondersteuning biedt voor Selenium RC-scripts en één browser per besturingselement. Grid 2 wordt meegeleverd met de Selenium Server JAR-bestand, vereist geen Ant en ondersteunt zowel RC- als WebDriver-scripts.

Maak een DesiredCapabilities-object aan, stel de browserName en het platform ervan in en geef het vervolgens door aan een RemoteWebDriver die naar het knooppunt verwijst. URLHet grid stuurt de test door naar een overeenkomend knooppunt voor die browser en dat besturingssysteem.

AI kan testruns prioriteren en parallel uitvoeren, onbetrouwbare tests voorspellen, de belasting over knooppunten verdelen en defecte locators automatisch herstellen. Dit vermindert de uitvoeringstijd en de onderhoudsinspanning op grote grids die veel verschillende browser-OS-combinaties draaien.

Ja. AI-tools kunnen het optimale aantal knooppunten aanbevelen, JSON-configuraties genereren, cloudgrids automatisch schalen op basis van de wachtrijlengte en onderbenutte capaciteit detecteren.ping Teams kunnen grote softwarepakketten efficiënt gebruiken zonder handmatige afstemming.

Vat dit bericht samen met: