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, operatingsystemer 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.

Selenium Grid Architecture
Selenium Grid 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..

Set Up Selenium Grid

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. Folloenwing trin vil starte hub'en 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 -krukke selenium-server-standalone-2.30.0.jar -rolle-hub
  • Hubben skulle være lanceret. Din kommandoprompt skal ligne billedet nedenfor.

Set Up Selenium Grid

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

Set Up Selenium Grid

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

Set Up Selenium Grid

  • Når du trykker på Enter, skal din kommandoprompt svare til billedet nedenfor.

Set Up Selenium Grid

Trin 6) Gå til Selenium Grid webgrænseflade og opdater siden. Du burde se sådan noget.

Set Up Selenium Grid

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 lave enten den ene eller begge af following:

  • Kør dine tests mod forskellige browsere, operatingsystemer 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

Following 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 , 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

Design af testscripts, der kan køre på nettet

At bruge RemoteWebDriver objekt, skal du importere disse pakker.

Design af testscripts, der kan køre på nettet

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.

Brug af DesiredCapabilites-objektet

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 DesiredCapabilites-objektet

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.

Brug af 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å.

Kører en prøvetestcase på gitteret Kører en prøvetestcase på gitteret

Selenium gitterkonfiguration ved hjælp af JSON-fil

JSON står for Javascript Object Notation. Det er et standardformat, der bruges til udveksling af data mellem browseren og webserveren. Selenium har en indbygget JSON-konfigurationsfil, der kan bruges til opsætning selenium grid.

Nedenfor er trinene til at konfigurere selenium gitter ved hjælp af JSON-konfigurationsfil.

Trin 1) Download koden til JSON-konfigurationsfilen ved at bruge nedenstående sti

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

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

Selenium Gitterkonfiguration ved hjælp af JSON-fil

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

Selenium Gitterkonfiguration ved hjælp af JSON-fil

Konfigurer NODES ved hjælp af JSON

Trin 1) Download eksempelknudekonfigurationsfilen leveret af Selenium ved at bruge nedenstående URL

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

BEMÆRK VENLIGST: HVIS DU BRUGER SELENIUM 3.0 ELLER OVER SKAL NEDENFOR JSON-FIL ANVENDES

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

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

Konfigurer noder ved hjælp af JSON

Trin 5) Naviger til gitterkonsollen for at kontrollere, om noderne er blevet konfigureret

Konfigurer noder ved hjælp af JSON

Browserne er displyed 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 = "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");
         }

     }

 }

Ovenstående kode starter chrome-browseren og navigerer til den URL, der er angivet i 'baseURL'-variablen. Det bekræftede, at et linknavn 'Mobiltest' er displayed 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 samtidigtneonormalt 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.