For å forstå hvordan du kjører skript parallelt, la oss først forstå
Hvorfor trenger vi økthåndtering?
Under testutførelsen må Selenium WebDriver samhandle med nettleseren hele tiden for å utføre gitte kommandoer. På tidspunktet for utførelse er det også mulig at før andre kjøringen er fullført, begynner noen andre å utføre et annet skript, i samme maskin og i samme type nettleser.
I en slik situasjon trenger vi en mekanisme der våre to forskjellige henrettelser ikke skal overlappe hverandre. Dette kan oppnås ved å bruke Session Handling in Selenium.
Hvordan oppnå økthåndtering i Selenium WebDriver?
Hvis du sjekker kildekoden til Selenium WebDriver, finner du en variabel kalt 'sessionId'. Hver gang vi oppretter en ny forekomst av et WebDriver-objekt, vil en ny 'sessionId' bli generert og festet med den aktuelle Firefox / Chrome / IE-driveren ().
Så alt vi gjør etter dette, vil bare utføres i den aktuelle Firefox-leserøkten.
Siden dette er en innebygd funksjonalitet, er det ikke noe eksplisitt behov for å tilordne økt-ID
Kodeeksempel: Her genereres to forskjellige økter for to forskjellige WebDriver.
importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.firefox.FirefoxDriver;offentlig klasse SessionHandling {public static void main (String ... strings) {// Første økt med WebDriverWebDriver-driver = ny FirefoxDriver ();// Gå til nettstedet guru99driver.get ("http://demo.guru99.com/V4/");// Andre økt av WebDriverWebDriver driver2 = ny FirefoxDriver ();// Gå til nettstedet guru99driver2.get ("http://demo.guru99.com/V4/");}}
Hvordan kjøre parallelle tester med selen
Det er situasjoner der du vil kjøre flere tester samtidig.
I slike tilfeller kan man bruke "parallell" attributt
Parallellattributtet til suite-taggen kan akseptere fire verdier:
tester | Alle testtilfellene i |
klasser | Alle testtilfellene i en Java-klasse vil kjøre parallelt |
metoder | Alle metodene med @Test-merknaden utføres parallelt. |
tilfeller | Test tilfeller i samme tilfelle vil utføre parallelle, men to metoder for to forskjellige forekomster vil kjøre i forskjellige tråder. |
Attributt-trådtelling lar deg spesifisere hvor mange tråder som skal tildeles for denne utførelsen.
Komplett eksempel: I dette eksemplet vil tre testtilfeller kjøre parallelt og fylle påloggingsdata på http://demo.guru99.com
Hele prosjektet vil se ut:
TestGuru99MultipleSession.java
importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.chrome.ChromeDriver;importer org.testng.annotations.Test;offentlig klasse TestGuru99MultipleSession {@Testpublic void executSessionOne () {// Første økt med WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver driver = ny ChromeDriver ();// Gå til nettstedet guru99driver.get ("http://demo.guru99.com/V4/");// finn brukernavn tekstboks og fyll dendriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Testpublic void executeSessionTwo () {// Andre økt av WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver driver = ny ChromeDriver ();// Gå til nettstedet guru99driver.get ("http://demo.guru99.com/V4/");// finn brukernavn tekstboks og fyll dendriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Testpublic void executSessionThree () {// Tredje økt av WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver driver = ny ChromeDriver ();// Gå til nettstedet guru99driver.get ("http://demo.guru99.com/V4/");// finn brukernavn tekstboks og fyll dendriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}
TestNG.XML
xml version = "1.0" koding = "UTF-8"?>
Test sakens rekkefølge og avhengighet
Du kan angi rekkefølge og avhengighet av gjennomføring av testsak.
Anta at du har to testtilfeller, 'testGuru99TC1' og 'testGuru99TC2', og at du vil utføre testsaken 'testGuru99TC2' før 'testGuru99TC1'. I så fall vil vi bruke attributten 'dependsOnMethods' for å lage avhengighet og rekkefølge for utførelse.
xml version = "1.0" koding = "UTF-8"?>
Sammendrag
- En ny økt-ID opprettes for en ny forekomst av WebDriver.
- Én økt bindes med en bestemt nettleser.
- Ved hjelp av attributtråd og parallell kjører du skriptene dine parallelt.
- Du kan bruke attributtavhengighet for å angi rekkefølgen for å teste utførelsen