Selenium Grid Tutorial: Konfigurera en hubb och nod (exempel)

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 ansluta till webbadressen nedan

http://192.168.43.223:4444/grid/console

OBS: URL:en kan variera från maskin till maskin. URL följt av 'Noder bör registreras till' på ovanstående skärm 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 = "http://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 webbadressen som anges i variabeln 'baseURL'. Det verifierade att ett länknamn "Mobiltestning" visas på sidan

URL på variabeln 'nodeURL' kan ändras för att återspegla IP-adressen för fjärrmaskinen. Testresultat kan verifieras som standard TestNG rapport genererad

Sammanfattning

  • Selenium Grid används för att köra flera tester samtidigt på olika webbläsare och plattformar.
  • Grid använder nav-nod-konceptet.
  • Navet är den centrala punkten där du laddar dina tester.
  • Noder är Selenium instanser som kommer att utföra testerna som du laddade på hubben.
  • Så här installerar du Selenium Grid, du behöver bara ladda ner Selenium Server jar-fil – samma fil som används vid körning Selenium RC-tester.
  • Det finns två sätt att verifiera om hubben körs: ett var via kommandotolken och det andra var via en webbläsare.
  • För att köra testskript på Grid, bör du använda DesiredCapabilities och RemoteWebDriver-objekten.
  • DesiredCapabilites används för att ställa in vilken typ av webbläsare och operativsystem som vi ska automatisera.
  • RemoteWebDriver används för att ställa in vilken nod (eller maskin) som vårt test ska köras mot.