Selenium Grid-tutorial: een hub en knooppunt instellen (voorbeeld)
Wat is Selenium Rooster?
Selenium Raster is een onderdeel van de Selenium Suite die gespecialiseerd is in het uitvoeren van meerdere tests op verschillende browsers, besturingssystemen en machines parallel. Dit wordt bereikt door de opdrachten van externe browserinstanties te routeren waarbij een server als hub fungeert. Een gebruiker moet de externe server configureren om de tests uit te voeren.
Selenium Grid heeft twee versies: het oudere Grid 2 en het nieuwere Grid 1. We zullen ons alleen concentreren op Grid 2 omdat Grid 2 geleidelijk wordt verouderd door de Selenium Team.
Selenium Raster Architectuur
Selenium Grid heeft een hub en een knooppunt Archistructuur.
Naaf
- De hub is het centrale punt waar u uw tests inlaadt.
- Er mag slechts één hub in een netwerk aanwezig zijn.
- De hub wordt alleen op één enkele machine gestart, bijvoorbeeld een computer waarvan het besturingssysteem is Windows 7 en wiens browser IE is.
- De machine met de hub is waar de tests worden uitgevoerd, maar u zult zien dat de browser op het knooppunt wordt geautomatiseerd.
Nodes
- Knooppunten zijn de Selenium instances die de tests uitvoeren die u op de hub hebt geladen.
- Er kunnen een of meer knooppunten in een raster zijn.
- Knooppunten kunnen op meerdere machines met verschillende platforms en browsers worden gestart.
- De machines waarop de knooppunten draaien hoeven niet hetzelfde platform te zijn als dat van de hub.
Selenium Grid maakt gebruik van een hub-node-concept waarbij u de test alleen uitvoert op één enkele machine, genaamd a naaf, maar de uitvoering zal worden gedaan door verschillende machines genaamd knooppunten.
Hoe instellen Selenium Rooster?
In dit gedeelte gebruikt u 2 machines. De eerste machine zal het systeem zijn dat de hub zal draaien, terwijl de andere machine een knooppunt zal draaien. Laten we voor de eenvoud de machine waarop de hub draait ‘Machine A’ noemen, terwijl de machine waarop het knooppunt draait ‘Machine B’ zal zijn. Het is ook belangrijk om hun IP-adressen te noteren. Laten we zeggen dat machine A het IP-adres 192.168.1.3 heeft, terwijl machine B het IP-adres 192.168.1.4 heeft.
Stap 1) Download de Selenium Serveerster van hier.
Stap 2) Je kunt de Selenium Server .jar-bestand waar dan ook op uw harde schijf. Maar voor het doel van deze tutorial plaatst u deze op de C-schijf van zowel Machine A als Machine B. Nadat u dit hebt gedaan, bent u nu klaar met de installatie Selenium Grid. De volgende stappen zullen de hub en de node lanceren.
Stap 3)
- We gaan nu een hub lanceren. Ga naar Machine A. Navigeer met behulp van de opdrachtprompt naar de hoofdmap van de C-schijf van Machine A, want dat is de map waar we de Selenium Server.
- Typ op de opdrachtprompt java -jar selenium-server-standalone-2.30.0.jar -role hub
- De hub zou met succes gelanceerd moeten worden. Uw opdrachtprompt zou er ongeveer zo uit moeten zien als de onderstaande afbeelding.
Stap 4) Een andere manier om te controleren of de hub actief is, is door een browser te gebruiken. Selenium Grid gebruikt standaard poort 4444 van Machine A voor zijn webinterface. Open gewoon een browser en ga naar http://localhost:4444/grid/console
U kunt ook controleren of Machine B toegang heeft tot de webinterface van de hub door daar een browser te starten en naar de plaats te gaan waar “iporhostnameofmachineA” het IP-adres of de hostnaam moet zijn van de machine waarop de hub draait. Aangezien het IP-adres van machine A 192.168.1.3 is, moet u in de browser op machine B typen http://192.168.1.3:4444/grid/console
Stap 5)
- Nu de hub al is opgezet, gaan we een knooppunt lanceren. Ga naar Machine B en start daar een opdrachtprompt.
- Navigeer naar de hoofdmap van Drive C en typ de onderstaande code. We gebruikten het IP-adres 192.168.1.3 omdat daar de hub draait. We gebruikten ook poort 5566, hoewel u elk gewenst gratis poortnummer kunt kiezen.
- OPMERKING: U moet nu het pad naar het Gecko-stuurprogramma opgeven als u dit gebruikt Firefox. Hier is bijgewerkte code die moet worden gebruikt
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
- Wanneer u op Enter drukt, zou uw opdrachtprompt er ongeveer zo uit moeten zien als in de onderstaande afbeelding.
Stap 6) Ga naar uw Selenium Raster de webinterface en vernieuw de pagina. Je zou zoiets als dit moeten zien.
Op dit punt hebt u al een eenvoudig raster geconfigureerd. U bent nu klaar om op afstand een test uit te voeren op Machine B.
Wanneer te gebruiken Selenium Rooster?
Je zou ... moeten gebruiken Selenium Raster wanneer u een of beide van de volgende handelingen wilt uitvoeren:
- Voer uw tests uit op verschillende browsers, besturingssystemen en machines tegelijkertijd. Dit zorgt ervoor dat de toepassing die u bent Testen is volledig compatibel met een breed scala aan browser-OS-combinaties.
- Bespaar tijd bij de uitvoering van uw testsuites. Als je het hebt ingesteld Selenium Raster om bijvoorbeeld 4 tests tegelijk uit te voeren, dan zou je de hele suite ongeveer 4 keer sneller kunnen voltooien.
Raster 1.0 versus raster 2.0
Hieronder staan de belangrijkste verschillen tussen Selenium Raster 1 en 2.
Grid 1 | Grid 2 |
---|---|
Selenium Grid 1 heeft een eigen afstandsbediening die anders is dan de Selenium RC-server. Het zijn twee verschillende programma's. | Selenium Grid 2 is nu gebundeld met de Selenium Server jar-bestand |
U moet installeren en configureren apache Ant eerst voordat u Grid 1 kunt gebruiken. | U hoeft Apache Ant niet te installeren in Grid 2. |
Kan alleen maar ondersteunen Selenium RC-opdrachten/scripts. | Kan beide ondersteunen Selenium RC- en WebDriver-scripts. |
Per afstandsbediening kunt u slechts één browser automatiseren. | Eén afstandsbediening kan maximaal 5 browsers automatiseren. |
Selenium grid kan op twee verschillende manieren worden opgezet; één via de opdrachtregel en de andere via het JSON-configuratiebestand.
Testscripts ontwerpen die op het raster kunnen worden uitgevoerd
Om testscripts te ontwerpen die op het raster kunnen worden uitgevoerd, moeten we gebruiken Gewenste capaciteiten en RemoteWebDriver voorwerpen.
- Gewenste capaciteiten wordt gebruikt om het type in te stellen browser en OS dat we gaan automatiseren.
- RemoteWebDriver wordt gebruikt om in te stellen op welk knooppunt (of machine) onze test zal draaien.
Om het gebruik Gewenste capaciteiten object, moet u dit pakket eerst importeren
Om het gebruik RemoteWebDriver object, moet u deze pakketten importeren.
Het DesiredCapabilites-object gebruiken
Ga naar de webinterface van Grid en plaats de muisaanwijzer op een afbeelding van de browser die u wilt automatiseren. Houd rekening met de platform. en browsernaam getoond door de tooltip.
In dit geval is het platform “XP” en de browsernaam “Firefox. '
We gebruiken het platform en de browsernaam in onze WebDriver zoals hieronder weergegeven (uiteraard moet u eerst de benodigde pakketten importeren).
Het RemoteWebDriver-object gebruiken
Importeer de benodigde pakketten voor RemoteWebDriver en geef vervolgens het DesiredCapabilities-object door dat we hierboven hebben gemaakt als parameter voor het RemoteWebDriver-object.
Een voorbeeldtestcase uitvoeren op het raster
Hieronder vindt u een eenvoudige webdriver Testen code waarin u kunt aanmaken Eclipse op Machine A. Zodra u het uitvoert, wordt de automatisering uitgevoerd op Machine 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()); } }
De test zou moeten slagen.
Selenium rasterconfiguratie met behulp van JSON-bestand
JSON staat voor Javascript Objectnotatie. Het is een standaardformaat dat wordt gebruikt voor de uitwisseling van gegevens tussen de browser en de webserver. Selenium heeft een ingebouwd JSON-configuratiebestand dat kan worden gebruikt om Selenium Grid in te stellen.
Hieronder vindt u de stappen voor het configureren van Selenium Grid met behulp van een JSON-configuratiebestand.
Stap 1) Download de code voor het JSON-configuratiebestand via het onderstaande pad
Hier is de code
{ "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 }
Stap 2) Kopieer en plak de code in een teksteditor zoals Kladblok met de extensie '.json'
Stap 3)Start de hub met behulp van de onderstaande opdracht via de opdrachtprompt
java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json
NOTITIE: Selenium stand-alone jar-bestand en het json-bestand moeten aanwezig zijn in dezelfde map
Stap 4) Het onderstaande scherm verschijnt, wat aangeeft dat de hub succesvol is ingesteld
Stap 5) Open een webbrowser en probeer verbinding te maken met de onderstaande URL
http://192.168.43.223:4444/grid/console
NOTITIE: De URL kan variëren van machine tot machine. De URL gevolgd door 'Nodes moeten zich registreren bij' op het bovenstaande scherm moet worden gebruikt.
Stap 6) Het Grid Console-scherm verschijnt, wat aangeeft dat de hub actief is
Configureer NODES met JSON
Stap 1) Download het voorbeeldknooppuntconfiguratiebestand van Selenium via onderstaande URL
NOTITIE: ALS U SELENIUM 3.0 OF HOGER GEBRUIKT, MOET HET ONDERSTAANDE JSON-BESTAND WORDEN GEBRUIKT
Stap 2) Kopieer en plak de code in een teksteditor zoals Kladblok en sla het bestand op met de extensie '.json'
Stap 3)
Voer de onderstaande opdracht uit op de opdrachtprompt
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
NOTITIE: Voordat u de opdracht uitvoert, moet u ervoor zorgen dat de stuurprogramma's voor elk van de browsers zijn gedownload naar de lokale machinemap
Stap 4) Het onderstaande scherm verschijnt wanneer u op de Enter-toets drukt
Stap 5) Navigeer naar de rasterconsole om te controleren of de knooppunten succesvol zijn geconfigureerd
De browsers worden weergegeven op de gridconsole. Daarom kunnen we er zeker van zijn dat de nodes succesvol zijn geconfigureerd.
Voorbeeldtestgevallen ingeschakeld Selenium Raster:
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"); } } }
De bovenstaande code start de Chrome-browser en navigeert naar de URL die is opgegeven in de variabele 'baseURL'. Het verifieert dat een link met de naam 'Mobile Testing' op de pagina wordt weergegeven
De URL op de 'nodeURL'-variabele kan worden gewijzigd om het IP-adres van de externe machine weer te geven. Het testresultaat kan standaard worden geverifieerd TestNG rapport gegenereerd
Samenvatting
- Selenium Grid wordt gebruikt om meerdere tests tegelijkertijd uit te voeren op verschillende browsers en platforms.
- Grid maakt gebruik van het hub-node-concept.
- De hub is het centrale punt waar u uw toetsen laadt.
- Knooppunten zijn de Selenium instances die de tests uitvoeren die u op de hub hebt geladen.
- Om te installeren Selenium Grid, je hoeft alleen maar het Selenium Server jar-bestand – hetzelfde bestand dat wordt gebruikt bij running Selenium RC-testen.
- Er zijn twee manieren om te verifiëren of de hub actief is: de ene was via de opdrachtprompt en de andere was via een browser.
- Om testscripts op het Grid uit te voeren, moet u de objecten DesiredCapabilities en RemoteWebDriver gebruiken.
- DesiredCapabilites wordt gebruikt om het type browser en besturingssysteem in te stellen dat we gaan automatiseren.
- RemoteWebDriver wordt gebruikt om in te stellen op welk knooppunt (of machine) onze test zal draaien.