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.

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.

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..
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.
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
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
- Når du trykker Enter, skal ledeteksten din ligne på bildet nedenfor.
Trinn 6) Gå til Selenium Grid webgrensesnitt og oppdater siden. Du burde se noe slikt.
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
For å bruke RemoteWebDriver objekt, må du importere disse pakkene.
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.
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 RemoteWebDriver-objektet
Importer de nødvendige pakkene for RemoteWebDriver og send deretter DesiredCapabilities-objektet som vi opprettet ovenfor som en parameter for 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å.
![]() |
![]() |
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
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
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
Konfigurer NODES med JSON
Trinn 1) Last ned eksempelnodekonfigurasjonsfilen levert av Selenium ved hjelp av det nedenfor URL
NOTAT: HVIS DU BRUKER SELENIUM 3.0 ELLER OVER, MÅ JSON-FILEN NEDENFOR BRUKES
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
Trinn 5) Naviger til rutenettkonsollen for å bekrefte om nodene har blitt konfigurert
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







.png)






