Párhuzamos végrehajtás szelénben: munkamenetkezelés és amp; TestNG függőség

Tartalomjegyzék:

Anonim

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 címkéjében lévő összes teszteset párhuzamosan fog futni.
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

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.

Ö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