För att förstå hur man kör skript parallellt, låt oss först förstå det
Varför behöver vi sessionhantering?
Under testkörningen måste Selenium WebDriver interagera med webbläsaren hela tiden för att utföra givna kommandon. Vid tidpunkten för körningen är det också möjligt att någon annan, innan den aktuella körningen är klar, körning av ett annat skript, i samma maskin och i samma typ av webbläsare.
I en sådan situation behöver vi en mekanism genom vilken våra två olika avrättningar inte bör överlappa varandra. Detta kan uppnås med Session Handling in Selenium.
Hur uppnås sessionhantering i Selen WebDriver?
Om du kontrollerar källkoden för Selenium WebDriver hittar du en variabel med namnet 'sessionId'. Närhelst vi skapar en ny instans av ett WebDriver-objekt kommer en ny 'sessionId' att genereras och bifogas med just den Firefox / Chrome / IE-drivrutinen ().
Så allt vi gör efter detta kommer bara att köras i just den Firefox-webbläsarsessionen.
Eftersom detta är en inbyggd funktionalitet finns det inget uttryckligt behov av att tilldela session-id
Kodexempel: Här skapas två olika sessioner för två olika WebDriver.
importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.firefox.FirefoxDriver;public class SessionHandling {public static void main (String ... strings) {// Första sessionen i WebDriverWebDriver-drivrutin = ny FirefoxDriver ();// Gå till webbplatsen Guru99driver.get ("http://demo.guru99.com/V4/");// Andra sessionen i WebDriverWebDriver driver2 = ny FirefoxDriver ();// Gå till webbplatsen Guru99driver2.get ("http://demo.guru99.com/V4/");}}
Hur man kör parallella tester med selen
Det finns situationer där du vill köra flera tester samtidigt.
I sådana fall kan man använda "parallellt" attribut
Det parallella attributet för svitstaggen kan acceptera fyra värden:
tester | Alla testfall i |
klasser | Alla testfall i en Java-klass körs parallellt |
metoder | Alla metoder med @Test-anteckningen körs parallellt. |
instanser | Testfall i samma instans körs parallellt men två metoder för två olika instanser körs i olika trådar. |
Attributtrådräkningen låter dig ange hur många trådar som ska tilldelas för denna körning.
Komplett exempel: I det här exemplet körs tre testfall parallellt och fyller inloggningsdata på http://demo.guru99.com
Hela projektet kommer att se ut:
TestGuru99MultipleSession.java
importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.chrome.ChromeDriver;importera org.testng.annotations.Test;offentlig klass TestGuru99MultipleSession {@Testapublic void executSessionOne () {// Första sessionen i WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-drivrutin = ny ChromeDriver ();// Gå till webbplatsen Guru99driver.get ("http://demo.guru99.com/V4/");// hitta användarnamns textruta och fyll i dendriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Testapublic void executeSessionTwo () {// Andra sessionen i WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-drivrutin = ny ChromeDriver ();// Gå till webbplatsen Guru99driver.get ("http://demo.guru99.com/V4/");// hitta användarnamns textruta och fyll i dendriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Testapublic void executSessionThree () {// Tredje sessionen för WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-drivrutin = ny ChromeDriver ();// Gå till webbplatsen Guru99driver.get ("http://demo.guru99.com/V4/");// hitta användarnamns textruta och fyll i dendriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}
TestNG.XML
xml version = "1.0" kodning = "UTF-8"?>
Testa fallordning och beroende
Du kan ställa in ordning och beroende av utförandet av testfall.
Antag att du har två testfall, 'testGuru99TC1' och 'testGuru99TC2' och att du vill köra testfall 'testGuru99TC2' före 'testGuru99TC1'. I så fall använder vi attributet 'dependsOnMethods' för att göra beroende och ordning på utförandet.
xml version = "1.0" kodning = "UTF-8"?>
Sammanfattning
- Ett nytt sessionID skapas för en ny instans av WebDriver.
- En session kommer att bindas med en viss webbläsare.
- Med attributtråd och parallell kör du dina skript parallellt.
- Du kan använda attributberoende för att ställa in ordningen för testutförande