Opzetten van een seleniumraster voor gedistribueerde seleniumtesten



Deze blog zal u helpen de behoefte aan Selenium Grid en de voordelen ervan te begrijpen. Lees het om uw eerste Selenium Grid op te zetten door hub en knooppunten te configureren.

De andere blogs in deze Selenium-tutorialserie spreken over het maken van testcases en het achtereenvolgens en parallel uitvoeren van die testcases. De laatste techniek die nog ter discussie staat, is de uitvoering van testcases op externe machines. Selenium Grid kan worden gebruikt voor het uitvoeren van deze tests op externe machines / hosts. Daarom is dat het onderwerp van discussie op de blog van vandaag.

  1. Waarom en wanneer Selenium Grid gebruiken?
  2. Wat is Selenium Grid?
  3. Selenium Grid 1 versus Selenium Grid 2
  4. Architectuur van Selenium Grid
  5. Een seleniumraster bouwen

Waarom en wanneer seleniumraster gebruiken?

Er zijn tegenwoordig zoveel webbrowsers in gebruik. Gebruikers kunnen Chrome of Firefox of Safari of Opera of zelfs Internet Explorer gebruiken om deze blog te lezen. Ze gebruiken mogelijk verschillende versies van de browsers. Ze kunnen deze browsers ook op elk besturingssysteem uitvoeren, of het nu Windows of Mac of Ubuntu is of een andere Linux-distributie.





Wat als de gebruikers iets belangrijks op internet zouden zien? Iets belangrijks voor uw bedrijf. Zou u niet die extra mijl willen gaan (de webapp testen) om ervoor te zorgen dat uw gebruikers en / of klanten de beste gebruikerservaring krijgen? Dat zou je toch doen?

Nou, je zou moeten!



Maar de vraag is: hoe haalbaar is het? Kunt u tijd besteden aan het testen van uw webapp op elk mogelijk besturingssysteem en elke beschikbare webbrowser? Hmm, dat klinkt als een uitdaging. Dit is waar Selenium Grid bij past en helptbespaar uw tijd en energie.

Daarnaast rijst nog een vraag: is het haalbaar om een ​​Selenium-netwerkinfrastructuur op te zetten met behulp van lokale systemen? Het onderhouden van een raster met alle vereiste browsers en besturingssystemen is een uitdaging. Hiervoor zijn er meerdere online platforms die een online Selenium Grid bieden waartoe u toegang hebt om uw seleniumautomatiseringsscripts uit te voeren. U kunt bijvoorbeeld LambdaTest . Het heeft meer dan 2000 browseromgevingen waarin u uw tests kunt uitvoeren en echt automatisch cross-browsertests kunt uitvoeren.

Wat is een seleniumraster?

Selenium Grid is een ander belangrijk hulpmiddel in de Selenium-reeks tools. Grid is in staat om WebDriver-tests / RC-tests te coördineren die tegelijkertijd op meerdere webbrowsers kunnen worden uitgevoerd of die op verschillende besturingssystemen kunnen worden gestart of zelfs op verschillende machines kunnen worden gehost.



rasterwerk - seleniumroosterDus, hoe werkt dat? Grid maakt gebruik van een Hub-Node-architectuur waarbij er één Hub is, die fungeert als de master en een of meer Nodes die als slaves fungeren.

Dit betekent dat als u in totaal 100 taken / tests moet uitvoeren, de tests tegelijkertijd kunnen worden uitgevoerd op 5 machines, waarbij elke machine 20 tests zal uitvoeren. In feite kunt u deze tests uitvoeren in verschillende combinaties van besturingssystemen en browsers. Elke machine kan hier van een ander besturingssysteem zijn en binnen elk besturingssysteem kunnen de tests op verschillende browsers worden uitgevoerd.

Deze handeling zou gemakkelijk veel tijd besparen bij het uitvoeren van tests. Als u naar het bovenstaande voorbeeld kijkt, kunnen we de uitvoeringstijd terugbrengen tot ongeveer 1/5 van de totale tijd die nodig is om tests uit te voeren op een enkele machine.

date datatype in sql-voorbeeld

Als je je kunt herinneren uit mijn vorige blogs, ik heb ontelbare keren vermeld dat Grid deel uitmaakte van het Selenium-project sinds het begin, d.w.z. sinds Selenium v1. Selenium Grid was ook een onderdeel van Selenium v2 en is momenteel een onderdeel van Selenium v3. Er is niet veel verschil in de v2 en v3 van de Selenium Grid. V1 heeft echter relatief veel verschillen. Dus laten webegrijp de verschillen tussen v1 en v2.

Selenium Grid 1 versus Selenium Grid 2

Het fundamentele verschil tussen Grid v1.0 en v2.0 is dat RC werd gebruikt in Grid 1 en WebDriver in Grid 2. In de onderstaande tabel worden de verschillen in detail uitgelegd.

Raster 1 Rooster 2
Vereist dat Apache Ant is geïnstalleerdApache Ant-installatie is niet vereist
Heeft een eigen afstandsbediening (dit is anders dan de RC-server)Gebundeld met Selenium Server jar-bestand
Ondersteunt alleen Selenium RC-opdrachtenOndersteunt zowel Selenium RC- als WebDriver-scripts
U kunt slechts één browser per afstandsbediening automatiserenU kunt maximaal 5 browsers per afstandsbediening automatiseren


Nu we de fundamentele verschillen tussen de twee versies hebben geleerd, laten we eens diep in Selenium Grid duiken.

Architectuur Van Seleniumnet

Zoals ik al eerder zei, functioneert Grid op basis van één Hub en meerdere Nodes. Maar wat zijn Hub en Nodes en wat doen ze?

De Hub

In elke Grid-opstelling kan er maar één Hub zijn en dat zal het centrale punt zijn in die Grid-opstelling. Alle tests die moeten worden uitgevoerd, moeten hier worden geladen. Ondanks dat de tests hier worden geladen, worden ze alleen bij de Nodes uitgevoerd. We kunnen elke hostcomputer configureren als onze Hub, en het zal de testuitvoering in andere hosts coördineren.

Om dit te laten gebeuren, moeten we eerst de hub configureren en vervolgens andere knooppunten maken om zich bij de hub te registreren. Voordat ik op teveel details inga, wil ik je de opdracht laten zien om de Hub te configureren.

De Hub configureren

U moet allereerst het Selenium-server JAR-bestand downloaden van de website van Seleniumhq. De link is hier . U moet er ook voor zorgen dat Java op uw systeem is geïnstalleerd en dat de omgevingsvariabelen zijn ingesteld.

Nadat u het jar-bestand heeft gedownload, moet u het in een geschikte map plaatsen. Voor mijn gemak heb ik het gedownload en in de map Selenium in C Drive geplaatst. Het wordt aanbevolen om ook het jar-bestand te downloaden en het in een vergelijkbare map in alle andere knooppunten te plaatsen.

Om de Hub te configureren, moet u de opdracht uitvoeren in de Windows-opdrachtprompt. De opdracht is aanwezig in het onderstaande fragment.

C: UsersVardhan> cd .. C: Users> cd .. C:> cd Selenium C: Selenium> java -jar selenium-server-standalone-3.4.0.jar -role hub

De selenium-server-standalone-3.4.0.jar is de naam van het jar-bestand dat ik heb gedownload.
De -rol vlag wordt gebruikt om die specifieke hostmachine in te stellen als de hub. Als je op enter drukt, krijg je de onderstaande output op je scherm.

Als je de bovenstaande schermafbeelding niet hebt opgemerkt, bekijk hem dan opnieuw. Het zegt ' -Nodes moeten zich registreren op http://192.168.0.11:4444/grid/register ‘. Nu de hub is geconfigureerd, moeten we de knooppunten instellen en deze met deze hub verbinden.

192.168.0.11 is het IP-adres van de hub en elk knooppunt moet verbinding maken met dit IP-adres. 4444 is het standaardpoortnummer waarop Selenium Grid wordt gehost en naar verzoeken luistert. Als er een andere service op poort 4444 draait en u wilt dat Selenium Grid op een andere poort wordt gehost, dan kunt u dat doen door de -haven vlag gevolgd door het poortnummer.

De knooppunten

De knooppunten zijn de gastmachines waarop de tests worden uitgevoerd. Deze tests worden gestart door de Hub. De hub kan een of meer knooppunten starten op externe machines of op dezelfde machine waarop de hub zelf zich bevindt. Op elk van de Nodes kunnen verschillende besturingssystemen worden opgestart en op verschillende besturingssystemen kunnen verschillende versies van dezelfde browser of verschillende browsers worden gestart.

De knooppunten configureren

Net als bij de Hub moet u eerst het Jar-bestand downloaden in de Node-machines en het voor uw gemak op de C-schijf of een andere gemeenschappelijke directory plaatsen. U kunt vervolgens de onderstaande opdracht uitvoeren in de Windows-opdrachtprompt. Als u zelfs het knooppunt op dezelfde computer als uw hub start, moet u de opdracht uitvoeren door een andere opdrachtprompt te starten.

java -Dwebdriver.chrome.driver = E: chromedriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://192.168.0.11:4444/grid/register

Er zijn slechts een paar verschillen in deze opdracht in vergelijking met de opdracht die nodig is om de Hub te starten.
-Dwebdriver.chrome.driver = E: chromedriver.exe wordt gebruikt om het pad van het browserstuurprogramma in te stellen. Vergelijkbaar met het instellen van het pad van het browserstuurprogramma in uw WebDriver-code, specificeert u het hier om de Node in staat te stellen tests uit te voeren. Vanaf Selenium v3 moet u de driverbrowser voor Firefox downloaden. De browserdriver voor Firefox is de Gecko-driver. In versie 1 en 2 moet u echter het browserstuurprogramma instellen voor alle browsers behalve Firefox.
-rol knooppunt vlag wordt gebruikt om die specifieke hostmachine in te stellen als het knooppunt.
-hub http://192.168.0.11:4444/grid/register informeert het knooppunt om verbinding te maken met de hub door het IP-adres van de hub te gebruiken. Een belangrijk punt om op te merken is dat als u een Node start op dezelfde machine als uw Hub, u ‘ -hub http: // localhost: 4444 / grid / register ‘In de opdracht in plaats van het IP-adres van de Hub.

Wanneer u op enter drukt, krijgt u de onderstaande uitvoer op de opdrachtprompt.

De Node zou nu verbonden zijn met de Hub. U kunt dat verifiëren door terug te gaan naar de opdrachtprompt die is gebruikt om de Hub te starten en u zult het volgende bericht opmerken: ‘ Een knooppunt geregistreerd http://192.168.0.11:5555 ‘.

Het IP-adres en poortnummer is dat van uw Node. Omdat ik mijn Node op dezelfde machine heb als mijn Hub, is de poort die voor de Node wordt gebruikt 5555. Wanneer je het op een andere machine start, wordt de standaardpoort gebruikt.

Wanneer u de volgende URL op de machine van uw Hub start, krijgt u de status van de knooppunten die met uw Hub zijn verbonden. Zie het gemarkeerde gedeelte in de onderstaande schermafbeelding.

Nu uw Selenium Grid is geconfigureerd, kunt u doorgaan met het uitvoeren van testscripts op Nodes. Laat me nogmaals benadrukken dat we scripts in onze Hub moeten uitvoeren en dat ze in onze Nodes zullen worden uitgevoerd. Het script dat wordt gebruikt om de tests uit te voeren, is vergelijkbaar met WebDrivertesten.

Een seleniumraster bouwen

Ik heb mijn script in Eclipse IDE uitgevoerd. De uitvoering van dit script is afhankelijk van twee belangrijke bibliotheekpakketten. Zij zijn Gewenste mogelijkheden object en RemoteWebDriver voorwerp.

DesiredCapabilities wordt gebruikt om het browsertype en het besturingssysteem van onze Node in te stellen. Gebruik de onderstaande code om het DesiredCapabilities-object te importeren.

importeer org.openqa.selenium.remote.DesiredCapabilities

RemoteWebDriver wordt gebruikt om de Node te selecteren waarop we de test willen uitvoeren. Gebruik de onderstaande regels code om het RemoteWebDriver-object te importeren.

importeer java.net.MalformedURLException importeer java.net.URL importeer org.openqa.selenium.remote.RemoteWebDriver

Ik heb deze twee pakketten geïmporteerd samen met het TestNG-annotatiepakket voor mijn script, zoals weergegeven in het onderstaande codefragment. Ik heb TestNG-annotaties geïmporteerd omdat ik dit heb uitgevoerd als een TestNG-test waarvoor een gedetailleerd rapport zal worden gegenereerd. Ik zou je aanraden om dezelfde set pakketten voor je code te importeren.

Wanneer u over de logo's van een browser in de Selenium Hub-console manoeuvreert, krijgt u de details zoals de browsernaam en de platform van het knooppunt dat u wilt automatiseren. De afbeelding geeft ook aan hoeveel instanties van de browsers ik in mijn Node kan openen. Ik kan maximaal 5 Chrome-, 5 Firefox- en 1 Internet Explorer-instances configureren. Deze details zijn aanwezig in de onderstaande schermafbeelding.

U kunt de code in het onderstaande fragment gebruiken om uw eerste Grid op te zetten.

pakket GridTest import org.testng.annotations.AfterTest import org.testng.annotations.BeforeTest import org.testng.annotations.Test import java.net.MalformedURLException import java.net.URL import org.junit.Assert import org.openqa.selenium .Platform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesiredCapabilities import org.openqa.selenium.remote.RemoteWebDriver openbare klasse TestGrid {statische WebDriver-driver statische String nodeUrl @BeforeTest openbare leegte setup () gooit MalformedURLException { nodeUrl = 'http://192.168.0.11:5555/wd/hub' DesiredCapabilities-mogelijkheden = DesiredCapabilities.chrome () -capaciteiten.setBrowserName ('chrome') -capaciteiten.setPlatform (Platform.WINDOWS) -stuurprogramma = nieuwe RemoteWebDriver (nieuwe URL (nodeUrl ), mogelijkheden)} @Test public void simpleTest () Edureka ', driver.getTitle ()) @AfterTest public void afterTest () {driver.quit ()}}

Ik heb het volledige testscript opgedeeld in drie testannotaties. @BeforeTest, @Test en @AfterTest. In @BeforeTest heb ik de objecten DesiredCapablities en RemoteWebDriver gebruikt om mijn Node te configureren. In @Test heb ik de Node gevraagd om naar de homepage van Edureka te navigeren en de titel van de pagina te bevestigen. In @AfterTest heb ik de Node gevraagd om de browserinstantie te sluiten.

Wanneer uw test slaagt voor de uitvoering, krijgt u de onderstaande uitvoer.

18 mei 2017 15:09:07 org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Gedetecteerd dialect: OSS PASSED: simpleTest ===================== ========================== Standaardtest Tests worden uitgevoerd: 1, fouten: 0, overslaan: 0 ========== ===================================== ============= ================================== Standaard suite Totaal aantal uitgevoerde tests: 1, fouten: 0, overslaan: 0 = ==============================================

Aangezien dit wordt uitgevoerd als een TestNG-test, krijgt u een gedetailleerd testrapport dat lijkt op de onderstaande schermafbeelding.

Als je niet weet wat TestNG is en wat je testannotaties moet gebruiken, lees dan mijn blog over het gebruik van Selenium WebDriver met TestNG uit deze Selenium-tutorialserie.

U kunt de onderstaande video bekijken om getuige te zijn van een demonstratie van het bouwen van een seleniumrooster. De instructeur die de video levert, legt dezelfde concepten uit die in deze blog worden uitgelegd.

Selenium Grid-zelfstudie voor beginners | Selenium-zelfstudie | Edureka

Dat brengt ons dus aan het einde van deze Selenium Grid-blog. Als je enige twijfel of een probleem hebt met een code / inhoud van deze blogserie, laat deze dan achter in de opmerkingen hieronder en ik zal je probleem zo snel mogelijk oplossen.

Als je Selenium wilt leren en een carrière wilt opbouwen in het testdomein, bekijk dan onze interactieve, live-online hier, dat wordt geleverd met 24 * 7 ondersteuning om u tijdens uw leerperiode te begeleiden.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte en we nemen contact met u op.