A szkriptek párhuzamos futtatásának megértéséhez először meg kell értenünk
Miért van szükségünk a munkamenetkezelésre?
A teszt végrehajtása során a Selenium WebDriver-nek állandóan kölcsönhatásba kell lépnie a böngészővel az adott parancsok végrehajtásához. A végrehajtáskor az is lehetséges, hogy az aktuális végrehajtás befejezése előtt valaki más megkezdi egy másik szkript végrehajtását ugyanabban a gépben és ugyanolyan típusú böngészőben.
Ilyen helyzetben szükségünk van egy olyan mechanizmusra, amely révén a két különböző kivégzésünk nem fedheti egymást. Ez a szelén Session Handling használatával érhető el.
Hogyan érhető el a munkamenet-kezelés a szelén WebDriver programban?
Ha ellenőrzi a Selenium WebDriver forráskódját, talál egy változót, amelynek neve: 'sessionId'. Amikor létrehozunk egy új példányt egy WebDriver objektumból, egy új 'sessionId' generálódik és csatolódik az adott Firefox / Chrome / IE illesztőprogramhoz ().
Tehát bármit, amit ezek után teszünk, csak az adott Firefox böngésző munkamenetben hajtjuk végre.
Mivel ez egy beépített funkcionalitás, nincs szükség kifejezetten a munkamenet-azonosító hozzárendelésére
Kódpélda: Itt két különböző munkamenet jön létre két különböző WebDriver számára.
import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;nyilvános osztály SessionHandling {public static void main (String… húrok) {// A WebDriver első munkameneteWebDriver illesztőprogram = new FirefoxDriver ();// Goto99 oldaldriver.get ("http://demo.guru99.com/V4/");// A WebDriver második munkameneteWebDriver driver2 = új FirefoxDriver ();// Goto99 oldaldriver2.get ("http://demo.guru99.com/V4/");}}
A párhuzamos tesztek futtatása a szelénnel
Vannak olyan helyzetek, amikor egyszerre több tesztet is szeretne futtatni.
Ilyen esetekben a "párhuzamos" attribútum használható
A suite tag párhuzamos attribútuma négy értéket képes elfogadni:
tesztek | Az Xml fájl tesztelése |
osztályok | A Java osztályon belüli összes teszteset párhuzamosan fog futni |
mód | A @Test kommentárral ellátott összes módszer párhuzamosan fog futni. |
példányok | A tesztesetek ugyanabban a példában párhuzamosan fognak végrehajtani, de két különböző példány két metódusa fut különböző szálakban. |
A szálszám-attribútum segítségével megadhatja, hogy hány szálat kell lefoglalni ehhez a végrehajtáshoz.
Teljes példa: Ebben a példában három teszteset párhuzamosan fut, és kitölti a bejelentkezési adatokat a http://demo.guru99.com címen
A Complete projekt a következőképpen fog kinézni:
TestGuru99MultipleSession.java
import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;nyilvános osztály TestGuru99MultipleSession {@Tesztpublic void executSessionOne () {// A WebDriver első munkameneteSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver illesztőprogram = new ChromeDriver ();// Goto99 oldaldriver.get ("http://demo.guru99.com/V4/");// keresse meg a felhasználónév szövegmezőt és töltse kidriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Tesztpublic void executeSessionTwo () {// A WebDriver második munkameneteSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver illesztőprogram = new ChromeDriver ();// Goto99 oldaldriver.get ("http://demo.guru99.com/V4/");// keresse meg a felhasználónév szövegmezőt és töltse kidriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Tesztpublic void executSessionThree () {// A WebDriver harmadik munkameneteSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver illesztőprogram = new ChromeDriver ();// Goto99 oldaldriver.get ("http://demo.guru99.com/V4/");// keresse meg a felhasználónév szövegmezőt és töltse kidriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}
TestNG.XML
xml version = "1.0" encoding = "UTF-8"?>
Teszteset sorrend és függőség
Beállíthatja a teszteset végrehajtásának sorrendjét és függőségét.
Tegyük fel, hogy két tesztesete van, a „testGuru99TC1” és a „testGuru99TC2”, és a „testGuru99TC2” tesztesetet a „testGuru99TC1” előtt szeretné végrehajtani. Ebben az esetben a 'dependOnMethods' attribútumot használjuk a függőség és a végrehajtás sorrendjének megadására.
xml version = "1.0" encoding = "UTF-8"?>
Összegzés
- Új sessionID jön létre a WebDriver új példányához.
- Egy munkamenet egy adott böngészővel fog kötődni.
- Az attribútum szál és a párhuzamos használatával párhuzamosan futtatja a szkripteket.
- Az attribútumfüggőség segítségével beállíthatja a végrehajtást a végrehajtás tesztelésére