Selenium Grid-handledning: Konfigurera en hubb och nod
โก Smart sammanfattning
Selenium Grid kรถr flera tester parallellt รถver webblรคsare, operativsystem och maskiner med hjรคlp av en hub-och-nod-arkitektur. Hubben laddar tester pรฅ en maskin medan noder kรถr dem pรฅ andra, vilket mรถjliggรถr snabbare tรคckning รถver flera webblรคsare via kommandorads- eller JSON-konfiguration.

Vad รคr Selenium Rutnรคt?
Selenium Rutnรคt รคr en del av Selenium Svit som รคr specialiserad pรฅ att kรถra flera tester รถver olika webblรคsare, operativsystem och maskiner parallellt. Det uppnรฅs genom att dirigera kommandon frรฅn fjรคrrwebblรคsarinstanser dรคr en server fungerar som ett nav. En anvรคndare mรฅste konfigurera fjรคrrservern fรถr att kunna utfรถra testerna.
Selenium Grid har 2 versioner โ den รคldre Grid 1 och den nyare Grid 2. Vi kommer bara att fokusera pรฅ Grid 2 eftersom Grid 1 gradvis fasas ut av Selenium Team.
Selenium Rutnรคt Architecture
Selenium Grid har en Hub och Nod Architecture.

Nav
- Navet รคr den centrala punkten dรคr du laddar dina tester.
- Det ska bara finnas ett nav i ett rutnรคt.
- Navet startas bara pรฅ en enda maskin, sรคg en dator vars OS รคr Windows 7 och vars webblรคsare รคr IE.
- Maskinen som innehรฅller navet รคr dรคr testerna kommer att kรถras, men du kommer att se att webblรคsaren automatiseras pรฅ noden.
Nodes
- Noder รคr Selenium instanser som kommer att utfรถra testerna som du laddade pรฅ hubben.
- Det kan finnas en eller flera noder i ett rutnรคt.
- Noder kan startas pรฅ flera maskiner med olika plattformar och webblรคsare.
- Maskinerna som kรถr noderna behรถver inte vara samma plattform som navets.
Selenium Grid anvรคnder ett nav-nod-koncept dรคr du bara kรถr testet pรฅ en enda maskin som kallas a nav, men exekveringen kommer att gรถras av olika maskiner som kallas noder.
Hur du stรคller in Selenium Rutnรคt?
I det hรคr avsnittet kommer du att anvรคnda 2 maskiner. Den fรถrsta maskinen kommer att vara systemet som kommer att kรถra hubben medan den andra maskinen kommer att kรถra en nod. Fรถr enkelhetens skull, lรฅt oss kalla maskinen dรคr navet kรถrs som "Maskin A" medan maskinen dรคr noden kรถrs kommer att vara "Maskin B." Det รคr ocksรฅ viktigt att notera deras IP-adresser. Lรฅt oss sรคga att maskin A har en IP-adress pรฅ 192.168.1.3 medan maskin B har en IP-adress pรฅ 192.168.1.4.
Steg 1) ladda ner Selenium Server frรฅn hรคr..
Steg 2) Du kan placera Selenium Server .jar-fil var som helst pรฅ din hรฅrddisk. Men fรถr syftet med denna handledning, placera den pรฅ C-enheten pรฅ bรฅde maskin A och maskin B. Nรคr du har gjort detta รคr du nu klar med installationen Selenium Rutnรคt. Fรถljande steg kommer att starta hubben och noden.
Steg 3)
- Vi ska nu lansera ett nav. Gรฅ till maskin A. Anvรคnd kommandotolken och navigera till roten pรฅ maskin A:s โ C-enhet, eftersom det รคr katalogen dรคr vi placerade Selenium Server.
- Pรฅ kommandotolken skriver du java -jar selenium-server-standalone-2.30.0.jar -rollnav
- Navet bรถr lanseras framgรฅngsrikt. Din kommandotolk bรถr se ut som bilden nedan.
Steg 4) Ett annat sรคtt att verifiera om hubben รคr igรฅng รคr att anvรคnda en webblรคsare. Selenium Grid anvรคnder som standard Maskin A:s port 4444 fรถr sitt webbgrรคnssnitt. รppna bara en webblรคsare och gรฅ till http://localhost:4444/grid/console
Du kan ocksรฅ kontrollera om Maskin B kan komma รฅt hubbens webbgrรคnssnitt genom att starta en webblรคsare dรคr och gรฅ till dรคr "iporhostnameofmachineA" ska vara IP-adressen eller vรคrdnamnet pรฅ maskinen dรคr hubben kรถrs. Eftersom Maskin A:s IP-adress รคr 192.168.1.3 bรถr du skriva in i webblรคsaren pรฅ Maskin B http://192.168.1.3:4444/grid/console
Steg 5)
- Nu nรคr hubben redan รคr instรคlld kommer vi att lansera en nod. Gรฅ till Maskin B och starta en kommandotolk dรคr.
- Navigera till roten av Drive C och skriv in koden nedan. Vi anvรคnde IP-adressen 192.168.1.3 eftersom det รคr dรคr hubben kรถrs. Vi anvรคnde ocksรฅ port 5566 men du kan vรคlja vilket ledigt portnummer du vill.
- OBS: Du mรฅste nu ge sรถkvรคgen till Gecko-drivrutinen om du anvรคnder den Firefox. Hรคr รคr uppdaterad kod som behรถver anvรคndas
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 trycker pรฅ Enter bรถr din kommandotolk likna bilden nedan.
Steg 6) Gรฅ till Selenium Grid webbgrรคnssnitt och uppdatera sidan. Du borde se nรฅgot sรฅnt hรคr.
Vid det hรคr laget har du redan konfigurerat ett enkelt rutnรคt. Du รคr nu redo att kรถra ett test pรฅ distans pรฅ Machine B.
Nรคr ska du anvรคnda Selenium Rutnรคt?
Du borde anvรคnda Selenium Rutnรคt nรคr du vill gรถra antingen en eller bรฅda av fรถljande:
- Kรถr dina tester mot olika webblรคsare, operativsystem och maskiner samtidigt. Detta kommer att sรคkerstรคlla att applikationen du รคr Testning รคr helt kompatibel med ett brett utbud av webblรคsare-OS-kombinationer.
- Spara tid i utfรถrandet av dina testsviter. Om du stรคller in Selenium Grid fรถr att kรถra, sรคg, 4 tester รฅt gรฅngen, dรฅ skulle du kunna avsluta hela sviten cirka 4 gรฅnger snabbare.
Grid 1.0 vs Grid 2.0
Fรถljande รคr de viktigaste skillnaderna mellan Selenium Rutnรคt 1 och 2.
| Rutnรคt 1 | Rutnรคt 2 |
|---|---|
| Selenium Grid 1 har sin egen fjรคrrkontroll som skiljer sig frรฅn Selenium RC-server. Det รคr tvรฅ olika program. | Selenium Grid 2 รคr nu buntad med Selenium Server jar-fil |
| Du mรฅste installera och konfigurera Apache Ant fรถrst innan du kan anvรคnda Grid 1. | Du behรถver inte installera Apache Ant i Grid 2. |
| Kan bara stรถdja Selenium RC-kommandon/skript. | Kan stรถdja bรฅda Selenium RC- och WebDriver-skript. |
| Du kan bara automatisera en webblรคsare per fjรคrrkontroll. | En fjรคrrkontroll kan automatisera upp till 5 webblรคsare. |
Selenium rutnรคt kan sรคttas upp pรฅ tvรฅ olika sรคtt; en via kommandoraden och den andra via JSON-konfigurationsfilen.
Designa testskript som kan kรถras pรฅ nรคtet
Fรถr att designa testskript som kommer att kรถras pรฅ nรคtet mรฅste vi anvรคnda DesiredCapabilites och RemoteWebDriver fรถremรฅl.
- DesiredCapabilites anvรคnds fรถr att stรคlla in typen av webblรคsare och OS som vi kommer att automatisera.
- RemoteWebDriver anvรคnds fรถr att stรคlla in vilken nod (eller maskin) som vรฅrt test ska kรถras mot.
Att anvรคnda DesiredCapabilites objekt mรฅste du fรถrst importera detta paket
Att anvรคnda RemoteWebDriver objekt mรฅste du importera dessa paket.
Anvรคnda DesiredCapabilites-objektet
Gรฅ till Grids webbgrรคnssnitt och hรฅll muspekaren รถver en bild av webblรคsaren som du vill automatisera. Ta del av plattform, och webblรคsarens namn visas av verktygstipset.
I det hรคr fallet รคr plattformen "XP" och webblรคsarens namn รคr "Firefox. "
Vi kommer att anvรคnda plattformen och webblรคsarnamnet i vรฅr WebDriver som visas nedan (naturligtvis mรฅste du importera de nรถdvรคndiga paketen fรถrst).
Anvรคnda RemoteWebDriver-objektet
Importera de nรถdvรคndiga paketen fรถr RemoteWebDriver och skicka sedan DesiredCapabilities-objektet som vi skapade ovan som en parameter fรถr RemoteWebDriver-objektet.
Kรถra ett provtestfall pรฅ nรคtet
Nedan finns en enkel WebDriver Testng kod som du kan skapa i Eclipse pรฅ maskin A. Nรคr du har kรถrt den kommer automatisering att utfรถras 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()); } }
Testet ska bli godkรคnt.
![]() |
![]() |
Selenium rutnรคtskonfiguration med JSON-fil
JSON stรฅr fรถr Javascript Objektnotation. Det รคr ett standardformat som anvรคnds fรถr utbyte av data mellan webblรคsaren och webbservern. Selenium har en inbyggd JSON-konfigurationsfil som kan anvรคndas fรถr att stรคlla in selennรคt.
Nedan รคr stegen fรถr att konfigurera selennรคt med JSON-konfigurationsfil.
Steg 1) Ladda ner koden fรถr JSON-konfigurationsfilen genom att anvรคnda sรถkvรคgen nedan
Hรคr รคr 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
}
Steg 2) Kopiera och klistra in koden i en textredigerare som Anteckningar med tillรคgget ".json"
Steg 3) Starta navet med kommandot nedan med kommandotolken
java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json
OBS: Selenium fristรฅende jar-fil och json-filen mรฅste finnas i samma katalog
Steg 4) Skรคrmen nedan kommer att visas som indikerar att hubben har konfigurerats framgรฅngsrikt
Steg 5) รppna webblรคsaren och fรถrsรถk att ansluta till nedanstรฅende URL
http://192.168.43.223:4444/grid/console
OBS: Ocuco-landskapet URL kan variera frรฅn maskin till maskin. URL fรถljt av 'Noder ska registreras till' pรฅ skรคrmen ovan mรฅste anvรคndas.
Steg 6) Grid Console-skรคrmen visas som indikerar att hubben รคr igรฅng
Konfigurera NODES med JSON
Steg 1) Ladda ner exempelnodkonfigurationsfilen som tillhandahรฅlls av Selenium med hjรคlp av nedanstรฅende URL
OBS: OM DU ANVรNDER SELENIUM 3.0 ELLER Mร STE JSON-FILEN NEDAN ANVรNDAS
Steg 2) Kopiera och klistra in koden i en textredigerare som Anteckningar och spara filen med filtillรคgget '.json'
Steg 3)
Kรถr kommandot nedan pรฅ kommandotolken
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
OBS: Innan du kรถr kommandot, se till att drivrutinerna fรถr var och en av webblรคsarna har laddats ner till den lokala maskinkatalogen
Steg 4) Skรคrmen nedan kommer att visas nรคr enter-tangenten trycks ned
Steg 5) Navigera till rutnรคtskonsolen fรถr att kontrollera om noderna har konfigurerats
Webblรคsarna visas pรฅ rutnรคtskonsolen. Dรคrfรถr kan vi vara sรคkra pรฅ att noder konfigureras framgรฅngsrikt.
Provtestfall pรฅ Selenium Rutnรคt:
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"); } } }
Ovanstรฅende kod startar webblรคsaren Chrome och navigerar till URL anges i 'basen'URL' variabel. Den verifierade att en lรคnk med namnet 'Mobiltestning' visas pรฅ sidan
URL pรฅ nodenURLVariabeln ' kan รคndras fรถr att รฅterspegla fjรคrrmaskinens IP-adress. Testresultatet kan verifieras pรฅ standardinstรคllningen. TestNG rapport genererad







.png)






