Parallell kjøring i selen: økthåndtering og amp; TestNG avhengighet

Innholdsfortegnelse:

Anonim

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 -koden til Testing xml-filen vil kjøre parallelt.
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

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.

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