Selenium Grid Tutorial: Konfigurer en hub og node (eksempel)
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.

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..
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.
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
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
- Når du trykker på Enter, skal din kommandoprompt svare til billedet nedenfor.
Trin 6) Gå til Selenium Grid webgrænseflade og opdater siden. Du burde se sådan noget.
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
At bruge RemoteWebDriver objekt, skal du importere disse pakker.
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.
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 RemoteWebDriver-objektet
Importer de nødvendige pakker til RemoteWebDriver, og send derefter DesiredCapabilities-objektet, som vi oprettede ovenfor, som en parameter for 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å.
![]() |
![]() |
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
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
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'en kan variere fra maskine til maskine. URL efterfulgt af 'Noder skal registreres til' på ovenstående skærm skal bruges.
Trin 6) Grid Console-skærmen vises, hvilket indikerer, at hubben er oppe og køre
Konfigurer NODES ved hjælp af JSON
Trin 1) Download eksempelknudekonfigurationsfilen leveret af Selenium ved at bruge nedenstående URL
BEMÆRK VENLIGST: HVIS DU BRUGER SELENIUM 3.0 ELLER OVER, SKAL NEDENFOR JSON-FIL ANVENDES
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
Trin 5) Naviger til gitterkonsollen for at kontrollere, om noderne er blevet konfigureret
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 den URL, der er angivet i 'baseURL'-variablen. Det bekræftede, at et linknavn 'Mobiltest' vises på siden
URL på 'nodeURL'-variablen kan ændres til at afspejle IP-adressen på den eksterne maskine. Testresultatet kan verificeres på standard TestNG rapport genereret
Resumé
- Selenium Grid bruges til at køre flere test samtidigt på forskellige browsere og platforme.
- Grid bruger hub-node konceptet.
- Hubben er det centrale punkt, hvor du indlæser dine tests.
- Noder er Selenium instanser, der vil udføre de test, du har indlæst på hubben.
- Sådan installerer du Selenium Grid, du behøver kun at downloade Selenium Server jar-fil – den samme fil, der bruges til at køre Selenium RC test.
- Der er 2 måder at kontrollere, om hubben kører på: den ene var gennem kommandoprompten, og den anden var gennem en browser.
- For at køre testscripts på gitteret skal du bruge DesiredCapabilities og RemoteWebDriver-objekterne.
- DesiredCapabilites 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.