Lad os først forstå, hvordan man kører scripts parallelt
Hvorfor har vi brug for sessionhåndtering?
Under testudførelse skal Selenium WebDriver interagere med browseren hele tiden for at udføre givne kommandoer. På tidspunktet for udførelsen er det også muligt, at før en anden udførelse er afsluttet, starter en anden udførelse af et andet script i samme maskine og i samme type browser.
I en sådan situation har vi brug for en mekanisme, hvormed vores to forskellige henrettelser ikke skal overlappe hinanden. Dette kan opnås ved hjælp af Session Handling i Selen.
Hvordan opnås sessionhåndtering i Selen WebDriver?
Hvis du tjekker kildekoden til Selenium WebDriver, finder du en variabel, der hedder 'sessionId'. Når vi opretter en ny forekomst af et WebDriver-objekt, genereres en ny 'sessionId' og vedhæftes med den pågældende Firefox / Chrome / IE-driver ().
Så alt, hvad vi gør efter dette, udføres kun i den pågældende Firefox-browsersession.
Da dette er en indbygget funktionalitet, er der ikke noget eksplicit behov for at tildele session-id'et
Kodeeksempel: Her genereres to forskellige sessioner til to forskellige WebDriver.
import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;offentlig klasse SessionHandling {public static void main (String ... strings) {// Første session med WebDriverWebDriver-driver = ny FirefoxDriver ();// Gå til guru99-websteddriver.get ("http://demo.guru99.com/V4/");// Anden session af WebDriverWebDriver driver2 = ny FirefoxDriver ();// Gå til guru99-websteddriver2.get ("http://demo.guru99.com/V4/");}}
Sådan køres parallelle tests med selen
Der er situationer, hvor du vil køre flere tests på samme tid.
I sådanne tilfælde kan man bruge "parallel" attribut
Den parallelle attribut for suite-tag kan acceptere fire værdier:
test | Alle testtilfælde i |
klasser | Alle testcases i en Java-klasse kører parallelt |
metoder | Alle metoder med @Test-kommentar udføres parallelt. |
tilfælde | Testsager i samme instans udføres parallelt, men to metoder i to forskellige forekomster kører i forskellige tråde. |
Attributttrådtællingen giver dig mulighed for at specificere, hvor mange tråde der skal tildeles til denne udførelse.
Komplet eksempel: I dette eksempel kører tre testsager parallelt og udfylder logindata på http://demo.guru99.com
Det komplette projekt vil se ud som:
TestGuru99MultipleSession.java
import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;offentlig klasse TestGuru99MultipleSession {@Prøvepublic void executSessionOne () {// Første session med WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-driver = ny ChromeDriver ();// Gå til guru99-websteddriver.get ("http://demo.guru99.com/V4/");// find tekstfelt brugernavn og udfyld detdriver.findElement (By.name ("uid")) sendKeys ("Driver 1");}@Prøvepublic void executeSessionTwo () {// Anden session af WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-driver = ny ChromeDriver ();// Gå til guru99-websteddriver.get ("http://demo.guru99.com/V4/");// find tekstfelt brugernavn og udfyld detdriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Prøvepublic void executSessionThree () {// Tredje session af WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-driver = ny ChromeDriver ();// Gå til guru99-websteddriver.get ("http://demo.guru99.com/V4/");// find tekstfelt brugernavn og udfyld detdriver.findElement (By.name ("uid")) sendKeys ("Driver 3");}}
TestNG.XML
xml version = "1.0" kodning = "UTF-8"?>
Test sagsrækkefølge og afhængighed
Du kan indstille rækkefølge og afhængighed af udførelse af testsag.
Antag, at du har to testsager, 'testGuru99TC1' og 'testGuru99TC2', og at du vil udføre testcase 'testGuru99TC2' før 'testGuru99TC1'. I så fald bruger vi attributten 'dependsOnMethods' til at gøre afhængighed og rækkefølge for udførelse.
xml version = "1.0" kodning = "UTF-8"?>
Resumé
- Et nyt sessionID oprettes til en ny forekomst af WebDriver.
- Én session bindes med en bestemt browser.
- Ved hjælp af attributtråd og parallel kører du dine scripts parallelt.
- Du kan bruge attributafhængighed til at indstille rækkefølgen til testudførelse