Da bismo razumjeli kako paralelno pokretati skripte, prvo shvatimo
Zašto nam treba rukovanje sesijom?
Tijekom izvršavanja testa, Selenium WebDriver mora cijelo vrijeme komunicirati s preglednikom kako bi izvršio zadane naredbe. U vrijeme izvršavanja također je moguće da, prije trenutnog izvršavanja, netko drugi započne izvršavanje druge skripte, na istom stroju i u istoj vrsti preglednika.
U takvoj situaciji potreban nam je mehanizam po kojem se naše dvije različite egzekucije ne bi trebale međusobno preklapati. To se može postići korištenjem Session Handlinga u selenu.
Kako postići rukovanje sesijama u Selenium WebDriver?
Ako provjerite izvorni kod programa Selenium WebDriver, pronaći ćete varijablu nazvanu 'sessionId'. Kad god kreiramo novu instancu objekta WebDriver, generirat će se novi 'sessionId' i priložiti uz taj određeni upravljački program Firefox / Chrome / IE ().
Dakle, sve što radimo nakon ovoga izvršit ćemo samo u toj određenoj sesiji preglednika Firefox.
Budući da je ovo ugrađena funkcionalnost, nema izričite potrebe za dodjeljivanjem ID-a sesije
Primjer koda: Ovdje će se generirati dvije različite sesije za dva različita WebDrivera.
uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.firefox.FirefoxDriver;javni razred SessionHandling {javna statička void glavna (String ... stringovi) {// Prva sesija WebDriveraUpravljački program za WebDriver = novi FirefoxDriver ();// Idite na web mjesto guru99driver.get ("http://demo.guru99.com/V4/");// Druga sesija WebDriveraUpravljački program WebDriver2 = novi FirefoxDriver ();// Idite na web mjesto guru99driver2.get ("http://demo.guru99.com/V4/");}}
Kako pokrenuti paralelne testove sa selenom
Postoje situacije u kojima želite istodobno pokrenuti više testova.
U takvim se slučajevima može koristiti atribut "paralelno"
Paralelni atribut suite oznake može prihvatiti četiri vrijednosti:
ispitivanja | Svi test slučajevi unutar oznake |
razreda | Svi testovi unutar Java klase izvodit će se paralelno |
metode | Sve metode s oznakom @Test izvršavat će se paralelno. |
instanci | Test slučajevi u istoj instanci izvršavat će se paralelno, ali dvije metode dviju različitih instanci pokrenut će se u različitim nitima. |
Atribut count-count omogućuje vam određivanje koliko niti treba biti dodijeljeno za ovo izvršavanje.
Potpuni primjer: U ovom će se primjeru tri testna slučaja odvijati paralelno i ispunjavati podatke za prijavu na http://demo.guru99.com
Kompletni projekt izgledat će ovako:
TestGuru99MultipleSession.java
uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;javna klasa TestGuru99MultipleSession {@Testjavna praznina executSessionOne () {// Prva sesija WebDriveraSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Upravljački program WebDriver = novi ChromeDriver ();// Idite na web mjesto guru99driver.get ("http://demo.guru99.com/V4/");// pronađite okvir za tekst korisničkog imena i popunite gadriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Testjavna praznina executeSessionTwo () {// Druga sesija WebDriveraSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Upravljački program WebDriver = novi ChromeDriver ();// Idite na web mjesto guru99driver.get ("http://demo.guru99.com/V4/");// pronađite okvir za tekst korisničkog imena i popunite gadriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Testjavna void executSessionThree () {// Treća sesija WebDriveraSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Upravljački program WebDriver = novi ChromeDriver ();// Idite na web mjesto guru99driver.get ("http://demo.guru99.com/V4/");// pronađite okvir za tekst korisničkog imena i popunite gadriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}
TestNG.XML
xml version = "1.0" encoding = "UTF-8"?>
Redoslijed i ovisnost testnog slučaja
Možete postaviti redoslijed i ovisnost izvršenja test slučaja.
Pretpostavimo da imate dva test slučaja, 'testGuru99TC1' i 'testGuru99TC2' i želite izvršiti test slučaj 'testGuru99TC2' prije 'testGuru99TC1'. U tom ćemo slučaju koristiti atribut 'dependOnMethods' za izradu ovisnosti i redoslijed izvršenja.
xml version = "1.0" encoding = "UTF-8"?>
Sažetak
- Stvoren je novi sessionID za novu instancu WebDrivera.
- Jedna se sesija veže uz određeni preglednik.
- Koristeći nit atributa i paralelno, paralelno pokrećete svoje skripte.
- Ovisnost o atributima možete koristiti za postavljanje naloga za testiranje izvršenja