Pentru a înțelege cum să rulați scripturile în paralel, să înțelegem mai întâi
De ce avem nevoie de Session Handling?
În timpul execuției testului, Selenium WebDriver trebuie să interacționeze tot timpul cu browserul pentru a executa comenzile date. În momentul execuției, este de asemenea posibil ca, înainte de finalizarea executării curente, altcineva să înceapă executarea unui alt script, în aceeași mașină și în același tip de browser.
Într-o astfel de situație, avem nevoie de un mecanism prin care cele două execuții diferite să nu se suprapună una cu cealaltă. Acest lucru poate fi realizat folosind Session Handling in Selenium.
Cum se realizează gestionarea sesiunii în Selenium WebDriver?
Dacă verificați codul sursă al Selenium WebDriver, veți găsi o variabilă numită „sessionId”. Ori de câte ori creăm o nouă instanță a unui obiect WebDriver, un nou „sessionId” va fi generat și atașat cu acel driver special Firefox / Chrome / IE ().
Deci, orice vom face după aceasta se va executa numai în acea sesiune de browser Firefox.
Deoarece aceasta este o funcționalitate încorporată, nu este necesară explicit atribuirea ID-ului sesiunii
Exemplu de cod: Aici vor fi generate două sesiuni diferite pentru două WebDriver diferite.
import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;public class SessionHandling {public static main main (Șir ... șiruri) {// Prima sesiune de WebDriverDriver WebDriver = nou FirefoxDriver ();// Vezi site-ul guru99driver.get ("http://demo.guru99.com/V4/");// A doua sesiune de WebDriverWebDriver driver2 = nou FirefoxDriver ();// Vezi site-ul guru99driver2.get ("http://demo.guru99.com/V4/");}}
Cum se execută teste paralele cu seleniu
Există situații în care doriți să rulați mai multe teste în același timp.
În astfel de cazuri, se poate utiliza atributul „paralel”
Atributul paralel al etichetei suite poate accepta patru valori:
teste | Toate cazurile de test din interiorul etichetei |
clase | Toate cazurile de testare dintr-o clasă Java vor rula paralel |
metode | Toate metodele cu adnotare @Test se vor executa în paralel. |
instanțe | Testarea cazurilor în aceeași instanță se va executa paralel, dar două metode din două instanțe diferite vor rula în fir diferit. |
Atributul thread-count vă permite să specificați câte fire ar trebui alocate pentru această execuție.
Exemplu complet: în acest exemplu, trei cazuri de testare vor rula paralel și vor completa datele de conectare în http://demo.guru99.com
Proiectul complet va arăta ca:
TestGuru99MultipleSession.java
import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;public class TestGuru99MultipleSession {@Testpublic void executSessionOne () {// Prima sesiune de WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = nou ChromeDriver ();// Vezi site-ul guru99driver.get ("http://demo.guru99.com/V4/");// găsiți caseta de text nume utilizator și completați-odriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Testpublic void executeSessionTwo () {// A doua sesiune de WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = nou ChromeDriver ();// Vezi site-ul guru99driver.get ("http://demo.guru99.com/V4/");// găsiți caseta de text nume utilizator și completați-odriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Testpublic void executSessionThree () {// A treia sesiune de WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = nou ChromeDriver ();// Vezi site-ul guru99driver.get ("http://demo.guru99.com/V4/");// găsiți caseta de text nume utilizator și completați-odriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}
TestNG.XML
xml version = "1.0" encoding = "UTF-8"?>
Testarea ordinii cazului și dependență
Puteți seta ordinea și dependența de execuție a cazului de testare.
Să presupunem că aveți două cazuri de test, „testGuru99TC1” și „testGuru99TC2” și doriți să executați caz de test „testGuru99TC2” înainte de „testGuru99TC1”. În acest caz, vom folosi atributul „depindeOnMetode” pentru a face dependență și ordinea de execuție.
xml version = "1.0" encoding = "UTF-8"?>
rezumat
- Este creat un nou ID de sesiune pentru o nouă instanță a WebDriver.
- O sesiune se va lega cu un anumit browser.
- Folosind firul de atribute și paralel, rulați scripturile în paralel.
- Puteți utiliza dependența de atribut pentru a seta ordinea de testare a execuției