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.

  • ๐Ÿงฉ Rutnรคtsdefinierat: Kรถr tester parallellt รถver webblรคsare, operativsystem och maskiner via en hubb och noder.
  • ๐ŸŽฏ Hub: Den enda centrala maskinen dรคr du laddar tester; endast en hubb per rutnรคt.
  • ๐Ÿ–ฅ๏ธ noder: En eller flera maskiner som faktiskt utfรถr testerna pรฅ olika plattformar.
  • โš™๏ธ Setup: Starta Selenium Server-jar med -role-hub och -role-nod, eller anvรคnd en JSON-konfigurationsfil.
  • ๐Ÿงช Testskript: Anvรคnd DesiredCapabilities och RemoteWebDriver fรถr att rikta in sig pรฅ en webblรคsare, ett operativsystem och en nod.
  • โฑ๏ธ Nรคr du ska anvรคnda: Breda kompatibilitetskontroller fรถr webblรคsare och operativsystem och snabbare parallell kรถrning av sviter.

Selenium Rutnรคtshandledning

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.

Selenium Rutnรคt Architecture
Selenium Rutnรคt 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..

inrรคtta Selenium Rutnรคt

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.

inrรคtta Selenium Rutnรคt

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

inrรคtta Selenium Rutnรคt

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

inrรคtta Selenium Rutnรคt

  • Nรคr du trycker pรฅ Enter bรถr din kommandotolk likna bilden nedan.

inrรคtta Selenium Rutnรคt

Steg 6) Gรฅ till Selenium Grid webbgrรคnssnitt och uppdatera sidan. Du borde se nรฅgot sรฅnt hรคr.

inrรคtta Selenium Rutnรคt

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

Designa testskript som kan kรถras pรฅ nรคtet

Att anvรคnda RemoteWebDriver objekt mรฅste du importera dessa paket.

Designa testskript som kan kรถras pรฅ nรคtet

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.

Anvรคnder DesiredCapabilites-objektet

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รคnder DesiredCapabilites-objektet

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.

Anvรคnda 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.

Kรถr ett provtestfall pรฅ rutnรคtet Kรถr ett provtestfall pรฅ rutnรคtet

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

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

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

Selenium Rutnรคtskonfiguration med JSON-fil

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

Selenium Rutnรคtskonfiguration med JSON-fil

Konfigurera NODES med JSON

Steg 1) Ladda ner exempelnodkonfigurationsfilen som tillhandahรฅlls av Selenium med hjรคlp av nedanstรฅende URL

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

OBS: OM DU ANVร„NDER SELENIUM 3.0 ELLER Mร…STE JSON-FILEN NEDAN ANVร„NDAS

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

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

Konfigurera noder med JSON

Steg 5) Navigera till rutnรคtskonsolen fรถr att kontrollera om noderna har konfigurerats

Konfigurera noder med JSON

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

Vanliga frรฅgor

Hubben รคr den enda centrala maskinen dรคr du laddar tester och hanterar rutnรคtet. Noder รคr de maskiner som faktiskt kรถr testerna pรฅ specifika webblรคsar- och operativsystemkombinationer. Ett rutnรคt har en hubb och en eller flera noder.

Grid 1 anvรคnder en separat fjรคrrkontroll och krรคver Apache Ant, som endast stรถder Selenium RC-skript och en webblรคsare per kontroll. Grid 2 ingรฅr i Selenium Server-jar, behรถver ingen Ant och stรถder bรฅde RC- och WebDriver-skript.

Skapa ett DesiredCapabilities-objekt, ange dess browserName och plattform och skicka det sedan till en RemoteWebDriver som pekar mot nodens URLRutnรคtet dirigerar testet till en matchande nod fรถr den webblรคsaren och det operativsystemet.

AI kan prioritera och parallellisera testkรถrningar, fรถrutsรคga ojรคmna tester, balansera belastningen mellan noder och sjรคlvreparera trasiga positionerare. Detta minskar exekveringstid och underhรฅllsarbete pรฅ stora nรคt som kรถr mรฅnga kombinationer av webblรคsare och operativsystem.

Ja. AI-verktyg kan rekommendera optimala nodantal, generera JSON-konfigurationer, automatiskt skala molnnรคt baserat pรฅ kรถlรคngd och upptรคcka underutnyttjad kapacitet, hjรคlp.ping team kรถr stora sviter effektivt utan manuell justering.

Sammanfatta detta inlรคgg med: