Selenium Grid-vejledning: Opsæt en hub og node

⚡ Smart opsummering

Selenium Grid kører flere tests parallelt på tværs af browsere, operativsystemer og maskiner ved hjælp af en hub-og-node-arkitektur. Hubben indlæser tests på én maskine, mens noder udfører dem på andre, hvilket muliggør hurtigere dækning på tværs af browsere via kommandolinje- eller JSON-konfiguration.

  • 🧩 Gitterdefineret: Kører tests på tværs af browsere, operativsystemer og maskiner parallelt via en hub og noder.
  • 🎯 Hub: Den ene centrale maskine, hvor du indlæser tests; kun én hub pr. gitter.
  • 🖥️ nodes: En eller flere maskiner, der rent faktisk udfører testene på forskellige platforme.
  • 🇧🇷 Opsætning: Start Selenium Server jar med -role hub og -role node, eller brug en JSON-konfigurationsfil.
  • 🧪 Test scripts: Brug DesiredCapabilities og RemoteWebDriver til at målrette en browser, et operativsystem og en node.
  • ⏱️ Hvornår skal du bruge: Brede kompatibilitetskontroller af browsere og operativsystemer og hurtigere udførelse af parallelle suiter.

Selenium Grid-vejledning

Hvad er Selenium Gitter?

Selenium Grid er en del af Selenium Suite, der er specialiseret i at køre flere tests på tværs af forskellige browsere, operativsystemer og maskiner parallelt. Det opnås ved at dirigere kommandoerne fra eksterne browserforekomster, hvor en server fungerer som en hub. En bruger skal konfigurere fjernserveren for at udføre testene.

Selenium Grid har 2 versioner – den ældre Grid 1 og den nyere Grid 2. Vi vil kun fokusere på Grid 2, fordi Grid 1 gradvist bliver forældet af Selenium Hold.

Selenium Grid Architecture

Selenium Grid har en Hub og Node Architecture.

Selenium Grid Architecture
Selenium Grid Architecture

Hub

  • Hubben er det centrale punkt, hvor du indlæser dine tests.
  • Der bør kun være én hub i et gitter.
  • Hubben lanceres kun på en enkelt maskine, f.eks. en computer, hvis OS er Windows 7 og hvis browser er IE.
  • Det er maskinen, der indeholder hubben, hvor testene vil blive kørt, men du vil se, at browseren bliver automatiseret på noden.

nodes

  • Noder er Selenium instanser, der vil udføre de test, du har indlæst på hubben.
  • Der kan være en eller flere noder i et gitter.
  • Noder kan lanceres på flere maskiner med forskellige platforme og browsere.
  • Maskinerne, der kører noderne, behøver ikke at være den samme platform som navets.

Selenium Grid bruger et hub-node koncept, hvor du kun kører testen på en enkelt maskine kaldet a hub, men udførelsen vil blive udført af forskellige maskiner kaldet noder.

Sådan konfigureres Selenium Gitter?

I dette afsnit skal du bruge 2 maskiner. Den første maskine vil være det system, der kører hubben, mens den anden maskine kører en node. For nemheds skyld, lad os kalde maskinen, hvor navet kører, som "Maskin A", mens maskinen, hvor knudepunktet kører, vil være "Machine B." Det er også vigtigt at notere deres IP-adresser. Lad os sige, at maskine A har en IP-adresse på 192.168.1.3, mens maskine B har en IP på 192.168.1.4.

Trin 1) Download Selenium Server fra link..

Set Up Selenium Grid

Trin 2) Du kan placere Selenium Server .jar-fil hvor som helst på din harddisk. Men til formålet med denne øvelse skal du placere den på C-drevet på både maskine A og maskine B. Efter at have gjort dette, er du nu færdig med at installere Selenium Gitter. De følgende trin vil starte huben og noden.

Trin 3)

  • Vi vil nu lancere en hub. Gå til Machine A. Brug kommandoprompten til at navigere til roden af ​​Machine A's – C-drevet, fordi det er den mappe, hvor vi placerede Selenium Server.
  • På kommandoprompten skal du skrive java -jar selenium-server-standalone-2.30.0.jar -rolle hub
  • Hubben skulle være lanceret. Din kommandoprompt skal ligne billedet nedenfor.

Set Up Selenium Grid

Trin 4) En anden måde at kontrollere, om hubben kører på, er ved at bruge en browser. Selenium Grid bruger som standard Machine A's port 4444 til sin webgrænseflade. Du skal blot åbne en browser og gå til http://localhost:4444/grid/console

Set Up Selenium Grid

Du kan også kontrollere, om maskine B kan få adgang til hubbens webgrænseflade ved at starte en browser der og gå til, hvor "iporhostnameofmachineA" skal være IP-adressen eller værtsnavnet på den maskine, hvor hubben kører. Da maskine A's IP-adresse er 192.168.1.3, skal du skrive i browseren på maskine B. http://192.168.1.3:4444/grid/console

Trin 5)

  • Nu hvor hubben allerede er sat op, vil vi lancere en node. Gå til Machine B og start en kommandoprompt der.
  • Naviger til roden af ​​Drev C, og skriv koden nedenfor. Vi brugte IP-adressen 192.168.1.3, fordi det er der, hvor hub'en kører. Vi brugte også port 5566, selvom du kan vælge et hvilket som helst gratis portnummer, du ønsker.
  • BEMÆRK: Du skal nu give stien til Gecko-driveren, hvis du bruger Firefox. Her er opdateret kode, som skal bruges
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

Set Up Selenium Grid

  • Når du trykker på Enter, skal din kommandoprompt svare til billedet nedenfor.

Set Up Selenium Grid

Trin 6) Gå til Selenium Grid webgrænseflade og opdater siden. Du burde se sådan noget.

Set Up Selenium Grid

På dette tidspunkt har du allerede konfigureret et simpelt gitter. Du er nu klar til at køre en test eksternt på Machine B.

Hvornår skal den bruges ? Selenium Gitter?

Du skal bruge Selenium Gitter, når du vil gøre enten en eller begge af følgende:

  • Kør dine tests mod forskellige browsere, operativsystemer og maskiner på samme tid. Dette vil sikre, at den ansøgning, du er Test er fuldt ud kompatibel med en lang række browser-OS-kombinationer.
  • Spar tid i udførelsen af ​​dine testpakker. Hvis du sætter op Selenium Grid til at køre f.eks. 4 test ad gangen, så ville du være i stand til at afslutte hele suiten omkring 4 gange hurtigere.

Grid 1.0 vs Grid 2.0

Følgende er de vigtigste forskelle mellem Selenium Gitter 1 og 2.

Gitter 1 Gitter 2
Selenium Grid 1 har sin egen fjernbetjening, der er forskellig fra Selenium RC server. Det er to forskellige programmer. Selenium Grid 2 er nu bundtet med Selenium Server jar-fil
Du skal installere og konfigurere Apache Ant først, før du kan bruge Grid 1. Du behøver ikke at installere Apache Ant i Grid 2.
Kan kun støtte Selenium RC kommandoer/scripts. Kan understøtte begge dele Selenium RC- og WebDriver-scripts.
Du kan kun automatisere én browser pr. fjernbetjening. Én fjernbetjening kan automatisere op til 5 browsere.

Selenium gitter kan opsættes på to forskellige måder; den ene gennem kommandolinjen og den anden gennem JSON-konfigurationsfilen.

Design af testscripts, der kan køre på nettet

For at designe testscripts, der kører på nettet, skal vi bruge Ønskede kapaciteter og RemoteWebDriver objekter.

  • Ønskede kapaciteter bruges til at indstille typen af browser og OS som vi vil automatisere.
  • RemoteWebDriver bruges til at indstille hvilken node (eller maskine), som vores test vil køre imod.

At bruge Ønskede kapaciteter objekt, skal du først importere denne pakke

Design af testscripts, der kan køre på nettet

At bruge RemoteWebDriver objekt, skal du importere disse pakker.

Design af testscripts, der kan køre på nettet

Brug af DesiredCapabilites-objektet

Gå til gitterets webgrænseflade og svæv over et billede af den browser, du vil automatisere. Vær opmærksom på perron, og browsernavn vist af værktøjstippet.

Brug af DesiredCapabilites-objektet

I dette tilfælde er platformen "XP", og browsernavnet er "Firefox".

Vi vil bruge platformen og browsernavnet i vores WebDriver som vist nedenfor (du skal selvfølgelig først importere de nødvendige pakker).

Brug af DesiredCapabilites-objektet

Brug af RemoteWebDriver-objektet

Importer de nødvendige pakker til RemoteWebDriver, og send derefter DesiredCapabilities-objektet, som vi oprettede ovenfor, som en parameter for RemoteWebDriver-objektet.

Brug af RemoteWebDriver-objektet

Kørsel af en prøvetest på nettet

Nedenfor er en simpel WebDriver Testng kode, som du kan oprette i Eclipse på maskine A. Når du har kørt den, vil automatisering blive udført på maskine 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 skal bestå.

Kører en prøvetestcase på gitteret Kører en prøvetestcase på gitteret

Selenium gitterkonfiguration ved hjælp af JSON-fil

JSON står for Javascript Objektnotation. Det er et standardformat, der bruges til udveksling af data mellem browseren og webserveren. Selenium har en indbygget JSON-konfigurationsfil, der kan bruges til at opsætte selen-gitter.

Nedenfor er trinene til at konfigurere selennet ved hjælp af JSON-konfigurationsfilen.

Trin 1) Download koden til JSON-konfigurationsfilen ved at bruge nedenstående sti

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
}

Trin 2) Kopiér og indsæt koden på en teksteditor som f.eks. Notesblok med udvidelsen '.json'

Trin 3) Start hubben ved hjælp af nedenstående kommando ved hjælp af kommandoprompten

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

BEMÆRK VENLIGST: Selenium stand alone jar-fil, og json-filen skal være til stede i den samme mappe

Trin 4) Nedenstående skærmbillede vises, hvilket indikerer, at hubben er konfigureret med succes

Selenium Gitterkonfiguration ved hjælp af JSON-fil

Trin 5) Åbn webbrowseren og prøv at oprette forbindelse til nedenstående URL

http://192.168.43.223:4444/grid/console

BEMÆRK VENLIGST: URL kan variere fra maskine til maskine. URL efterfulgt af 'Noder skal registreres til' på ovenstående skærm skal anvendes.

Trin 6) Grid Console-skærmen vises, hvilket indikerer, at hubben er oppe og køre

Selenium Gitterkonfiguration ved hjælp af JSON-fil

Konfigurer NODES ved hjælp af JSON

Trin 1) Download eksempelknudekonfigurationsfilen leveret af Selenium ved hjælp af nedenstående URL

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

BEMÆRK VENLIGST: HVIS DU BRUGER SELENIUM 3.0 ELLER OVER, SKAL NEDENFOR JSON-FIL ANVENDES

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

Trin 2) Kopiér og indsæt koden i en teksteditor som f.eks. Notesblok, og gem filen med filtypenavnet '.json'

Trin 3)

Kør nedenstående kommando på kommandoprompten

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

BEMÆRK VENLIGST: Før du kører kommandoen, skal du sørge for, at driverne til hver af browserne er blevet downloadet til den lokale maskinmappe

Trin 4) Nedenstående skærm vises, når der trykkes på enter-tasten

Konfigurer noder ved hjælp af JSON

Trin 5) Naviger til gitterkonsollen for at kontrollere, om noderne er blevet konfigureret

Konfigurer noder ved hjælp af JSON

Browserne vises på gitterkonsollen. Derfor kan vi være sikre på, at noder er konfigureret med succes.

Prøvetesttilfælde tændt Selenium Gitter:

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

     }

 }

Ovenstående kode starter Chrome-browseren og navigerer til URL angivet i 'basen'URL' variabel. Den bekræftede, at et link med navnet 'Mobiltestning' vises på siden.

URL på 'noden'URL'variablen kan ændres for at afspejle IP-adressen på den eksterne maskine. Testresultatet kan verificeres på standardindstillingerne TestNG rapport genereret

Ofte Stillede Spørgsmål

Hubben er den centrale maskine, hvor du indlæser tests og administrerer gitteret. Noder er de maskiner, der rent faktisk kører testene på specifikke browser- og OS-kombinationer. Et gitter har én hub og en eller flere noder.

Grid 1 bruger en separat fjernbetjening og kræver Apache Ant, der kun understøtter Selenium RC-scripts og én browser pr. kontrol. Grid 2 leveres med Selenium Server jar, behøver ingen Ant, og understøtter både RC- og WebDriver-scripts.

Opret et DesiredCapabilities-objekt, angiv dets browserName og platform, og send det derefter til en RemoteWebDriver, der er peget på nodens URLGitteret sender testen til en matchende node for den pågældende browser og det pågældende operativsystem.

AI kan prioritere og parallelisere testkørsler, forudsige ustabile tests, afbalancere belastning på tværs af noder og selvreparere defekte lokaliseringspunkter. Dette reducerer udførelsestid og vedligeholdelsesindsats på store gitre, der kører mange browser-OS-kombinationer.

Ja. AI-værktøjer kan anbefale optimale nodeantal, generere JSON-konfigurationer, automatisk skalere cloud-gitre baseret på kølængde og registrere underudnyttet kapacitet, f.eks.ping Teams kører store suiter effektivt uden manuel justering.

Opsummer dette indlæg med: