Selenium Tutorial grilă: configurați un hub și un nod (exemplu)
Ce Este Selenium Grilă?
Selenium Grilă este o parte din Selenium Suită specializată în rularea mai multor teste pe diferite browsere, sisteme de operare și mașini în paralel. Se realizează prin direcționarea comenzilor instanțele de browser la distanță în care un server acționează ca un hub. Un utilizator trebuie să configureze serverul la distanță pentru a executa testele.
Selenium Grid are 2 versiuni – mai veche Grid 1 și mai nou Grid 2. Ne vom concentra doar pe Grid 2, deoarece Grid 1 este treptat depreciată de către Grid. Selenium Team.
Selenium Grilă Architectură
Selenium Grid are un hub și un nod Architectură.
Butuc
- Hub-ul este punctul central în care vă încărcați testele.
- Ar trebui să existe un singur hub într-o rețea.
- Hub-ul este lansat doar pe o singură mașină, să zicem, un computer al cărui sistem de operare este Windows 7 și al cărui browser este IE.
- Mașina care conține hub-ul este locul unde vor fi rulate testele, dar veți vedea că browserul este automatizat pe nod.
Nodurile
- Nodurile sunt Selenium instanțe care vor executa testele pe care le-ați încărcat pe hub.
- Într-o grilă pot exista unul sau mai multe noduri.
- Nodurile pot fi lansate pe mai multe mașini cu platforme și browsere diferite.
- Mașinile care rulează nodurile nu trebuie să fie aceeași platformă cu cea a hub-ului.
Selenium Grid utilizează un concept hub-nod în care rulați testul doar pe o singură mașină numită a butuc, dar execuția se va face de diferite mașini numite noduri.
Cum să configurați Selenium Grilă?
În această secțiune, veți folosi 2 mașini. Prima mașină va fi sistemul care va rula hub-ul, în timp ce cealaltă mașină va rula un nod. Pentru simplitate, să numim mașina în care hubul rulează „Mașina A”, în timp ce mașina în care rulează nodul va fi „Mașina B”. De asemenea, este important să rețineți adresele lor IP. Să spunem că Mașina A are o adresă IP de 192.168.1.3, în timp ce Mașina B are o adresă IP de 192.168.1.4.
Pas 1) Descărcați Selenium Server de la aici.
Pas 2) Puteți plasa Selenium Fișier server .jar oriunde în hard disk. Dar, în scopul acestui tutorial, plasați-l pe unitatea C atât a mașinii A, cât și a mașinii B. După ce ați făcut acest lucru, ați terminat instalarea Selenium Grilă. Următorii pași vor lansa hub-ul și nodul.
Pas 3)
- Acum vom lansa un hub. Mergeți la Mașina A. Folosind promptul de comandă, navigați la rădăcina unității Mașinii A – C, deoarece acesta este directorul în care am plasat Selenium Server.
- Pe promptul de comandă, tastați java -jar selenium-server-standalone-2.30.0.jar -role hub
- Hub-ul ar trebui să fie lansat cu succes. Linia de comandă ar trebui să arate similar cu imaginea de mai jos.
Pas 4) O altă modalitate de a verifica dacă hub-ul rulează este utilizarea unui browser. Selenium Grid, în mod implicit, folosește portul 4444 al mașinii A pentru interfața sa web. Pur și simplu deschideți un browser și accesați http://localhost:4444/grid/console
De asemenea, puteți verifica dacă Mașina B poate accesa interfața web a hub-ului lansând un browser acolo și mergând la locul unde „iporhostnameofmachineA” ar trebui să fie adresa IP sau numele de gazdă al mașinii pe care rulează hub-ul. Deoarece adresa IP a mașinii A este 192.168.1.3, atunci în browserul de pe mașina B ar trebui să tastați http://192.168.1.3:4444/grid/console
Pas 5)
- Acum că hub-ul este deja configurat, vom lansa un nod. Accesați Mașina B și lansați un prompt de comandă acolo.
- Navigați la rădăcina Drive C și introduceți codul de mai jos. Am folosit adresa IP 192.168.1.3 pentru că acolo rulează hub-ul. De asemenea, am folosit portul 5566, deși puteți alege orice număr de port gratuit doriți.
- NOTĂ: Acum trebuie să dați calea driverului Gecko dacă utilizați Firefox. Aici este codul actualizat care trebuie utilizat
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
- Când apăsați Enter, linia dvs. de comandă ar trebui să fie similară cu imaginea de mai jos.
Pas 6) Du-te la Selenium Grilă interfață web și reîmprospătați pagina. Ar trebui să vezi așa ceva.
În acest moment, ați configurat deja o grilă simplă. Acum sunteți gata să rulați un test de la distanță pe Mașina B.
Când să utilizați Selenium Grilă?
Ar trebui să utilizați Selenium Grilă atunci când doriți să faceți una sau ambele dintre următoarele:
- Rulați testele pe diferite browsere, sisteme de operare și mașini în același timp. Acest lucru va asigura că aplicația sunteți Testarea este pe deplin compatibil cu o gamă largă de combinații browser-OS.
- Economisiți timp în execuția suitelor dvs. de testare. Dacă ai configurat Selenium Grid pentru a rula, să zicem, 4 teste la un moment dat, apoi ați putea termina întreaga suită de aproximativ 4 ori mai repede.
Grid 1.0 vs Grid 2.0
Următoarele sunt principalele diferențe între Selenium Grila 1 și 2.
Grila 1 | Grila 2 |
---|---|
Selenium Grid 1 are propria telecomandă care este diferită de Selenium Server RC. Sunt două programe diferite. | Selenium Grila 2 este acum la pachet cu Selenium Fișier jar server |
Trebuie să instalați și să configurați Apache Ant înainte de a putea folosi Grid 1. | Nu trebuie să instalați Apache Ant în Grid 2. |
Poate doar suporta Selenium Comenzi/script-uri RC. | Poate suporta ambele Selenium Scripturi RC și WebDriver. |
Puteți automatiza doar un browser pentru fiecare telecomandă. | O singură telecomandă poate automatiza până la 5 browsere. |
Selenium grila poate fi configurată în două moduri diferite; unul prin linia de comandă și celălalt prin fișierul de configurare JSON.
Proiectarea scripturilor de testare care pot rula pe grilă
Pentru a proiecta scripturi de testare care vor rula pe grilă, trebuie să folosim Capacitățile dorite si RemoteWebDriver obiecte.
- Capacitățile dorite este folosit pentru a seta tipul de browser-ul si OS pe care le vom automatiza.
- RemoteWebDriver este folosit pentru a seta nodul (sau mașina) împotriva căruia va rula testul nostru.
Pentru a utiliza Capacitățile dorite obiect, trebuie mai întâi să importați acest pachet
Pentru a utiliza RemoteWebDriver obiect, trebuie să importați aceste pachete.
Utilizarea obiectului DesiredCapabilites
Accesați interfața web a Grid și plasați cursorul pe o imagine a browserului pe care doriți să o automatizați. Luați notă de platformă, si browserName indicată de sfatul instrumentului.
În acest caz, platforma este „XP”, iar numele browserului este „Firefox. "
Vom folosi platforma și browserName în WebDriver-ul nostru, așa cum se arată mai jos (desigur că trebuie să importați mai întâi pachetele necesare).
Utilizarea obiectului RemoteWebDriver
Importați pachetele necesare pentru RemoteWebDriver și apoi treceți obiectul DesiredCapabilities pe care l-am creat mai sus ca parametru pentru obiectul RemoteWebDriver.
Rularea unui exemplu de caz de testare pe grilă
Mai jos este un WebDriver simplu Testng cod pe care îl puteți crea Eclipse pe Mașina A. Odată ce îl rulați, automatizarea va fi efectuată pe Mașina 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()); } }
Testul ar trebui să treacă.
Selenium configurarea grilei folosind fișierul JSON
JSON înseamnă Javascript Notarea obiectului. Este un format standard utilizat pentru schimbul de date între browser și serverul web. Selenium are un fișier de configurare JSON încorporat care poate fi folosit pentru a configura grila de seleniu.
Mai jos sunt pașii pentru a configura grila de seleniu folosind fișierul de configurare JSON.
Pas 1) Descărcați codul pentru fișierul de configurare JSON folosind calea de mai jos
Iată codul
{ "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 }
Pas 2) Copiați și inserați codul într-un editor de text, cum ar fi Notepad cu extensia „.json”
Pas 3)Lansați hub-ul folosind comanda de mai jos folosind promptul de comandă
java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json
NOTĂ: Selenium fișier jar autonom și fișierul json trebuie să fie prezent în același director
Pas 4) Va apărea ecranul de mai jos, care indică faptul că hub-ul a fost configurat cu succes
Pas 5) Deschideți browserul web și încercați să vă conectați la adresa URL de mai jos
http://192.168.43.223:4444/grid/console
NOTĂ: URL-ul poate varia de la o mașină la alta. Trebuie utilizată adresa URL urmată de „Nodurile ar trebui să se înregistreze la” în ecranul de mai sus.
Pas 6) Va apărea ecranul Grid Console care indică faptul că hub-ul este pornit și funcționează
Configurați NODES folosind JSON
Pas 1) Descărcați exemplul de fișier de configurare a nodului furnizat de Selenium folosind adresa URL de mai jos
NOTĂ: DACĂ UTILIZAȚI SELENIUM 3.0 SAU SAU MAI UP, TREBUIE UTILIZAT FIȘIERUL JSON DE MAI JOS
Pas 2) Copiați și inserați codul într-un editor de text, cum ar fi Notepad și salvați fișierul cu extensia „.json”
Pas 3)
Rulați comanda de mai jos la promptul de comandă
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
NOTĂ: Înainte de a rula comanda, asigurați-vă că driverele pentru fiecare dintre browsere au fost descărcate în directorul local al mașinii
Pas 4) Ecranul de mai jos va apărea când tasta Enter este apăsată
Pas 5) Navigați la consola grilă pentru a verifica dacă nodurile au fost configurate cu succes
Browserele sunt afișate pe consola grilă. Prin urmare, putem fi siguri că nodurile sunt configurate cu succes.
Exemple de cazuri de testare Activate Selenium Grilă:
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"); } } }
Codul de mai sus lansează browserul Chrome și navighează la adresa URL specificată în variabila „baseURL”. S-a verificat că pe pagină este afișat numele de link „Testare mobilă”.
URL-ul de pe variabila „nodeURL” poate fi modificat pentru a reflecta adresa IP a mașinii de la distanță. Rezultatul testului poate fi verificat implicit TestNG raport generat
Rezumat
- Selenium Grid este folosit pentru a rula mai multe teste simultan pe diferite browsere și platforme.
- Grid folosește conceptul hub-node.
- Hub-ul este punctul central în care vă încărcați testele.
- Nodurile sunt Selenium instanțe care vor executa testele pe care le-ați încărcat pe hub.
- Pentru a instala Selenium Grid, trebuie doar să descărcați Selenium Fișier jar server – același fișier folosit în rulare Selenium Teste RC.
- Există 2 moduri de a verifica dacă hub-ul rulează: una a fost prin promptul de comandă, iar cealaltă a fost printr-un browser.
- Pentru a rula scripturi de testare pe Grid, ar trebui să utilizați obiectele DesiredCapabilities și RemoteWebDriver.
- DesiredCapabilites este folosit pentru a seta tipul de browser și sistemul de operare pe care le vom automatiza.
- RemoteWebDriver este folosit pentru a seta pe ce nod (sau mașină) va rula testul nostru.