Selenium Grid-opplæring: Konfigurer en hub og node

⚡ Smart oppsummering

Selenium Grid kjører flere tester på tvers av nettlesere, operativsystemer og maskiner parallelt ved hjelp av en hub-og-node-arkitektur. Huben laster inn tester på én maskin mens noder kjører dem på andre, noe som muliggjør raskere dekning på tvers av nettlesere via kommandolinje- eller JSON-konfigurasjon.

  • 🧩 Rutenett definert: Kjører tester på tvers av nettlesere, operativsystemer og maskiner parallelt via en hub og noder.
  • 🎯 Nav: Den ene sentrale maskinen der du laster inn tester; bare én hub per rutenett.
  • 🖥️ noder: En eller flere maskiner som faktisk utfører testene på forskjellige plattformer.
  • ⚙️ Oppsett: Start Selenium Server-jar med -role-hub og -role-node, eller bruk en JSON-konfigurasjonsfil.
  • 🧪 Testskript: Bruk DesiredCapabilities og RemoteWebDriver til å målrette en nettleser, et operativsystem og en node.
  • Når skal du bruke: Brede kompatibilitetskontroller for nettleser og operativsystem og raskere utførelse av parallelle pakker.

Selenium Rutenettveiledning

Hva er Selenium Nett?

Selenium Grid er en del av Selenium Suite som spesialiserer seg på å kjøre flere tester på tvers av forskjellige nettlesere, operativsystemer og maskiner parallelt. Det oppnås ved å rute kommandoene fra eksterne nettleserforekomster der en server fungerer som et knutepunkt. En bruker må konfigurere den eksterne serveren for å utføre testene.

Selenium Grid har 2 versjoner – den eldre Grid 1 og den nyere Grid 2. Vi vil kun fokusere på Grid 2 fordi Grid 1 gradvis blir avviklet av Selenium Team.

Selenium Grid Architecture

Selenium Grid har en Hub og Node Architecture.

Selenium Grid Architecture
Selenium Grid Architecture

Hub

  • Navet er det sentrale punktet der du laster testene dine inn.
  • Det skal bare være ett nav i et rutenett.
  • Huben lanseres bare på en enkelt maskin, for eksempel en datamaskin som har OS Windows 7 og hvis nettleser er IE.
  • Maskinen som inneholder huben er der testene skal kjøres, men du vil se at nettleseren blir automatisert på noden.

Nodes

  • Noder er Selenium forekomster som vil utføre testene du lastet inn på huben.
  • Det kan være en eller flere noder i et rutenett.
  • Noder kan lanseres på flere maskiner med forskjellige plattformer og nettlesere.
  • Maskinene som kjører nodene trenger ikke være den samme plattformen som navet.

Selenium Grid bruker et hub-node konsept hvor du bare kjører testen på en enkelt maskin kalt a hub, men utførelsen vil bli utført av forskjellige maskiner kalt noder.

Slik konfigurerer du Selenium Nett?

I denne delen skal du bruke 2 maskiner. Den første maskinen vil være systemet som skal kjøre huben mens den andre maskinen kjører en node. For enkelhets skyld, la oss kalle maskinen der navet kjører som "Machine A", mens maskinen der noden kjører vil være "Machine B." Det er også viktig å merke seg deres IP-adresser. La oss si at Maskin A har IP-adressen 192.168.1.3 mens Maskin B har IP-adressen 192.168.1.4.

Trinn 1) Last ned Selenium Server fra her..

Sett opp Selenium Grid

Trinn 2) Du kan plassere Selenium Server .jar-fil hvor som helst på harddisken. Men for formålet med denne opplæringen, plasser den på C-stasjonen til både Maskin A og Maskin B. Etter å ha gjort dette, er du nå ferdig med å installere Selenium Rutenett. Følgende trinn vil starte huben og noden.

Trinn 3)

  • Vi skal nå lansere et knutepunkt. Gå til Maskin A. Bruk ledeteksten og naviger til roten av Maskin A-C-stasjonen, fordi det er katalogen der vi plasserte Selenium Server.
  • Skriv inn på ledeteksten java -jar selenium-server-standalone-2.30.0.jar -rolle hub
  • Huben skal være vellykket lansert. Din ledetekst skal ligne på bildet nedenfor.

Sett opp Selenium Grid

Trinn 4) En annen måte å bekrefte om huben kjører på, er ved å bruke en nettleser. Selenium Grid bruker som standard Maskin A sin port 4444 for sitt nettgrensesnitt. Bare åpne en nettleser og gå til http://localhost:4444/grid/console

Sett opp Selenium Grid

Du kan også sjekke om Maskin B har tilgang til hubens nettgrensesnitt ved å starte en nettleser der og gå til der "iporhostnameofmachineA" skal være IP-adressen eller vertsnavnet til maskinen der huben kjører. Siden Maskin A sin IP-adresse er 192.168.1.3, bør du skrive inn i nettleseren på Maskin B. http://192.168.1.3:4444/grid/console

Trinn 5)

  • Nå som huben allerede er satt opp, skal vi lansere en node. Gå til Maskin B og start en ledetekst der.
  • Naviger til roten av Drive C og skriv inn koden nedenfor. Vi brukte IP-adressen 192.168.1.3 fordi det er der huben kjører. Vi brukte også port 5566, men du kan velge hvilket som helst gratis portnummer du ønsker.
  • MERK: Du må nå gi banen til Gecko-driveren hvis du bruker Firefox. Her er oppdatert kode som må brukes
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

Sett opp Selenium Grid

  • Når du trykker Enter, skal ledeteksten din ligne på bildet nedenfor.

Sett opp Selenium Grid

Trinn 6) Gå til Selenium Grid webgrensesnitt og oppdater siden. Du burde se noe slikt.

Sett opp Selenium Grid

På dette tidspunktet har du allerede konfigurert et enkelt rutenett. Du er nå klar til å kjøre en test eksternt på Machine B.

Når skal du bruke Selenium Nett?

Du bør bruke Selenium Rutenett når du vil gjøre ett eller begge av følgende:

  • Kjør testene dine mot forskjellige nettlesere, operativsystemer og maskiner samtidig. Dette vil sikre at programmet du er Testing er fullt kompatibel med et bredt spekter av nettleser-OS-kombinasjoner.
  • Spar tid i gjennomføringen av testpakkene dine. Hvis du setter opp Selenium Rutenett for å kjøre for eksempel 4 tester om gangen, så vil du kunne fullføre hele suiten rundt 4 ganger raskere.

Grid 1.0 vs Grid 2.0

Følgende er de viktigste forskjellene mellom Selenium Rutenett 1 og 2.

Rutenett 1 Rutenett 2
Selenium Grid 1 har sin egen fjernkontroll som er forskjellig fra Selenium RC server. Det er to forskjellige programmer. Selenium Grid 2 er nå buntet med Selenium Server jar-fil
Du må installere og konfigurere Apache Ant først før du kan bruke Grid 1. Du trenger ikke å installere Apache Ant i Grid 2.
Kan bare støtte Selenium RC-kommandoer/skript. Kan støtte begge deler Selenium RC- og WebDriver-skript.
Du kan bare automatisere én nettleser per fjernkontroll. Én fjernkontroll kan automatisere opptil 5 nettlesere.

Selenium rutenett kan settes opp på to forskjellige måter; en gjennom kommandolinjen og den andre gjennom JSON-konfigurasjonsfilen.

Utforme testskript som kan kjøres på nettet

For å designe testskript som skal kjøres på rutenettet, må vi bruke Ønskede kapasiteter og RemoteWebDriver objekter.

  • Ønskede kapasiteter brukes til å angi typen nett~~POS=TRUNC leseren~~POS=HEADCOMP og OS som vi skal automatisere.
  • RemoteWebDriver brukes til å angi hvilken node (eller maskin) testen vår skal kjøre mot.

For å bruke Ønskede kapasiteter objekt, må du først importere denne pakken

Designe testskript som kan kjøres på nettet

For å bruke RemoteWebDriver objekt, må du importere disse pakkene.

Utforme testskript som kan kjøres på nettet

Bruke DesiredCapabilites-objektet

Gå til Grids nettgrensesnitt og hold musepekeren over et bilde av nettleseren du vil automatisere. Legg merke til plattform, og nettlesernavn vist av verktøytipset.

Bruke DesiredCapabilites-objektet

I dette tilfellet er plattformen "XP" og nettleserens navn er "Firefox».

Vi vil bruke plattformen og nettlesernavnet i vår WebDriver som vist nedenfor (selvfølgelig må du importere de nødvendige pakkene først).

Bruke DesiredCapabilites-objektet

Bruke RemoteWebDriver-objektet

Importer de nødvendige pakkene for RemoteWebDriver og send deretter DesiredCapabilities-objektet som vi opprettet ovenfor som en parameter for RemoteWebDriver-objektet.

Bruke RemoteWebDriver-objektet

Kjøre en prøvetestsak på rutenettet

Nedenfor er en enkel WebDriver Testng kode som du kan lage i Eclipse på Maskin A. Når du kjører den, vil automatisering utføres på Maskin 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()); }
}

Prøven bør bestå.

Kjøre en prøvetestsak på rutenettet Kjøre en prøvetestsak på rutenettet

Selenium rutenettkonfigurasjon ved hjelp av JSON-fil

JSON står for Javascript Objektnotasjon. Det er et standardformat som brukes for utveksling av data mellom nettleseren og webserveren. Selenium har en innebygd JSON-konfigurasjonsfil som kan brukes til å sette opp selennett.

Nedenfor er trinnene for å konfigurere selennett ved hjelp av JSON-konfigurasjonsfilen.

Trinn 1) Last ned koden for JSON-konfigurasjonsfilen ved å bruke banen nedenfor

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

Her er koden

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

Trinn 2) Kopier og lim inn koden i et tekstredigeringsprogram som Notisblokk med utvidelsen '.json'

Trinn 3) Start huben ved å bruke kommandoen nedenfor ved å bruke ledeteksten

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

NOTAT: Selenium frittstående jar-fil og json-filen må være til stede i samme katalog

Trinn 4) Skjermbildet nedenfor vil vises som indikerer at huben er satt opp

Selenium Rutenettkonfigurasjon ved hjelp av JSON-fil

Trinn 5) Åpne nettleseren og prøv å koble til nedenfor URL

http://192.168.43.223:4444/grid/console

NOTAT: Ocuco URL kan variere fra maskin til maskin. URL etterfulgt av «Noder skal registreres til» på skjermbildet ovenfor må brukes.

Trinn 6) Grid Console-skjermbildet vises som indikerer at huben er oppe og går

Selenium Rutenettkonfigurasjon ved hjelp av JSON-fil

Konfigurer NODES med JSON

Trinn 1) Last ned eksempelnodekonfigurasjonsfilen levert av Selenium ved hjelp av det nedenfor URL

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

NOTAT: HVIS DU BRUKER SELENIUM 3.0 ELLER OVER, MÅ JSON-FILEN NEDENFOR BRUKES

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

Trinn 2) Kopier og lim inn koden i et tekstredigeringsprogram som Notisblokk og lagre filen med filtypen '.json'

Trinn 3)

Kjør kommandoen nedenfor på ledeteksten

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

NOTAT: Før du kjører kommandoen, sørg for at driverne for hver av nettleserne er lastet ned til den lokale maskinkatalogen

Trinn 4) Skjermbildet nedenfor vil vises når enter-tasten trykkes

Konfigurer noder ved hjelp av JSON

Trinn 5) Naviger til rutenettkonsollen for å bekrefte om nodene har blitt konfigurert

Konfigurer noder ved hjelp av JSON

Nettleserne vises på rutenettkonsollen. Derfor kan vi være sikre på at noder konfigureres vellykket.

Eksempel på testtilfeller på Selenium Nett:

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

     }

 }

Koden ovenfor starter Chrome-nettleseren og navigerer til URL spesifisert i 'basen'URL'variabel. Den bekreftet at en lenke med navnet 'Mobiltesting' vises på siden

URL på nodenURL'variabelen kan endres for å gjenspeile IP-adressen til den eksterne maskinen. Testresultatet kan bekreftes på standardinnstillingen TestNG rapport generert

Spørsmål og svar

Huben er den sentrale maskinen der du laster inn tester og administrerer rutenettet. Noder er maskinene som faktisk kjører testene på spesifikke nettleser- og operativsystemkombinasjoner. Et rutenett har én hub og én eller flere noder.

Grid 1 bruker en separat fjernkontroll og krever Apache Ant, som kun støtter Selenium RC-skript og én nettleser per kontroll. Grid 2 leveres med Selenium Server jar, trenger ikke Ant, og støtter både RC- og WebDriver-skript.

Opprett et DesiredCapabilities-objekt, angi nettlesernavn og plattform, og send det deretter til en RemoteWebDriver som peker mot nodens URLRutenettet ruter testen til en samsvarende node for den nettleseren og det operativsystemet.

AI kan prioritere og parallellisere testkjøringer, forutsi ustabile tester, balansere belastning på tvers av noder og selvreparere ødelagte lokatorer. Dette reduserer utførelsestid og vedlikeholdsarbeid på store nett som kjører mange kombinasjoner av nettleser og operativsystem.

Ja. AI-verktøy kan anbefale optimale nodeantall, generere JSON-konfigurasjoner, automatisk skalere skynett basert på kølengde og oppdage underutnyttet kapasitet, hjelpping Teamene kjører store suiter effektivt uten manuell justering.

Oppsummer dette innlegget med: