Selenium Rutenettveiledning: Sett opp en hub og node (eksempel)

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.

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

Sett opp Selenium Grid

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.

Sett opp Selenium Grid

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

Sett opp Selenium Grid

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

Sett opp Selenium Grid

  • Nรฅr du trykker Enter, skal ledeteksten din ligne pรฅ bildet nedenfor.

Sett opp Selenium Grid

Trinn 6) Gรฅ til Selenium Grid webgrensesnitt og oppdater siden. Du burde se noe slikt.

Sett opp Selenium Grid

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

Designe testskript som kan kjรธres pรฅ nettet

For รฅ bruke RemoteWebDriver objekt, mรฅ du importere disse pakkene.

Utforme testskript som kan kjรธres pรฅ nettet

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.

Bruke DesiredCapabilites-objektet

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

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.

Bruke 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รฅ.

Kjรธre en prรธvetestsak pรฅ rutenettet Kjรธre en prรธvetestsak pรฅ rutenettet

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

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
}

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

Selenium Rutenettkonfigurasjon ved hjelp av JSON-fil

Trinn 5) ร…pne nettleseren og prรธv รฅ koble til URL-en nedenfor

http://192.168.43.223:4444/grid/console

NOTAT: URL-en kan variere fra maskin til maskin. URL etterfulgt av 'Noder bรธr registreres til' pรฅ skjermen ovenfor mรฅ brukes.

Trinn 6) Grid Console-skjermbildet vises som indikerer at huben er oppe og gรฅr

Selenium Rutenettkonfigurasjon ved hjelp av JSON-fil

Konfigurer NODES med JSON

Trinn 1) Last ned eksempelnodekonfigurasjonsfilen levert av Selenium ved รฅ bruke URL-en nedenfor

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

NOTAT: HVIS DU BRUKER SELENIUM 3.0 ELLER OVER, Mร… JSON-FILEN NEDENFOR BRUKES

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

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

Konfigurer noder ved hjelp av JSON

Trinn 5) Naviger til rutenettkonsollen for รฅ bekrefte om nodene har blitt konfigurert

Konfigurer noder ved hjelp av JSON

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-en som er spesifisert i 'baseURL'-variabelen. Det bekreftet at et lenkenavn "Mobiltesting" vises pรฅ siden

URL pรฅ 'nodeURL'-variabelen kan endres for รฅ gjenspeile IP-adressen til den eksterne maskinen. Testresultat kan verifiseres pรฅ standard TestNG rapport generert

Sammendrag

  • Selenium Grid brukes til รฅ kjรธre flere tester samtidig pรฅ forskjellige nettlesere og plattformer.
  • Grid bruker hub-node-konseptet.
  • Navet er det sentrale punktet der du laster testene dine.
  • Noder er Selenium forekomster som vil utfรธre testene du lastet inn pรฅ huben.
  • Slik installerer Selenium Grid, du trenger bare รฅ laste ned Selenium Server jar-fil โ€“ den samme filen som brukes under kjรธring Selenium RC tester.
  • Det er 2 mรฅter รฅ bekrefte om huben kjรธrer pรฅ: den ene var gjennom ledeteksten, og den andre var gjennom en nettleser.
  • For รฅ kjรธre testskript pรฅ Grid, bรธr du bruke DesiredCapabilities og RemoteWebDriver-objektene.
  • DesiredCapabilites brukes til รฅ angi hvilken type nettleser og operativsystem vi skal automatisere.
  • RemoteWebDriver brukes til รฅ angi hvilken node (eller maskin) testen vรฅr skal kjรธre mot.

Oppsummer dette innlegget med: