Párhuzamos végrehajtás be Selenium
A szkriptek párhuzamos futtatásának megértéséhez először értsük meg
Miért van szükségünk munkamenet-kezelésre?
A teszt végrehajtása során a Selenium A WebDrivernek folyamatosan interakcióba kell lépnie a böngészővel, hogy végrehajtsa az adott parancsokat. A végrehajtás időpontjában az is előfordulhat, hogy az aktuális végrehajtás befejeződése előtt valaki más elindítja egy másik szkript végrehajtását, ugyanazon a gépen és ugyanabban a böngészőben.
Ilyen helyzetben szükségünk van egy olyan mechanizmusra, amellyel a két különböző végrehajtásunk nem fedheti át egymást. Ez a Session Handling in segítségével érhető el Selenium.
Hogyan lehet elérni a munkamenet-kezelést Selenium WebDriver?
Ha ellenőrzi a forráskódot Selenium WebDriver, talál egy „sessionId” nevű változót. Amikor egy WebDriver objektum új példányát hozzuk létre, egy új "sessionId" jön létre és csatolódik az adott objektumhoz. Firefox/Chrome/IE illesztőprogram ().
Tehát bármi, amit ezután teszünk, csak az adott helyen fog végrehajtani Firefox böngésző munkamenet.
Mivel ez egy beépített funkció, nincs szükség kifejezetten a munkamenet-azonosító hozzárendelésére
Code Pé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;
public class SessionHandling {
public static void main(String...strings ){
//First session of WebDriver
WebDriver driver = new FirefoxDriver();
//Goto guru99 site
driver.get("https://demo.guru99.com/V4/");
//Second session of WebDriver
WebDriver driver2 = new FirefoxDriver();
//Goto guru99 site
driver2.get("https://demo.guru99.com/V4/");
}
}
Hogyan lehet párhuzamos teszteket futtatni Selenium
Vannak olyan helyzetek, amikor több tesztet szeretne egyszerre futtatni.
Ilyen esetekben használhatjuk a „párhuzamos” attribútumot
A suite címke párhuzamos attribútuma négy értéket fogadhat el:
| tesztek | Az összes tesztdoboz belül címke Tesztelés xml fájl párhuzamosan fog futni. |
| osztályok | Az összes teszteset a Java osztály párhuzamosan fog futni |
| mód | Az összes @Test annotációval rendelkező metódus párhuzamosan fog végrehajtani. |
| példányok | Az ugyanabban a példányban lévő tesztesetek párhuzamosan futnak, de két különböző példány két metódusa különböző szálban fut. |
A thread-count attribútum lehetővé teszi annak megadását, hogy hány szálat kell lefoglalni ehhez a végrehajtáshoz.
Teljes példa: Ebben a példában három teszteset fut párhuzamosan, és kitölti a bejelentkezési adatokat https://demo.guru99.com/
A teljes projekt így fog kinézni:
TesztelésGuru99Többszörös Munkamenet.java
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class TestGuru99MultipleSession {
@Test
public void executSessionOne(){
//First session of WebDriver
System.setProperty("webdriver.chrome.driver","chromedriver.exe");
WebDriver driver = new ChromeDriver();
//Goto guru99 site
driver.get("https://demo.guru99.com/V4/");
//find user name text box and fill it
driver.findElement(By.name("uid")).sendKeys("Driver 1");
}
@Test
public void executeSessionTwo(){
//Second session of WebDriver
System.setProperty("webdriver.chrome.driver","chromedriver.exe");
WebDriver driver = new ChromeDriver();
//Goto guru99 site
driver.get("https://demo.guru99.com/V4/");
//find user name text box and fill it
driver.findElement(By.name("uid")).sendKeys("Driver 2");
}
@Test
public void executSessionThree(){
//Third session of WebDriver
System.setProperty("webdriver.chrome.driver","chromedriver.exe");
WebDriver driver = new ChromeDriver();
//Goto guru99 site
driver.get("https://demo.guru99.com/V4/");
//find user name text box and fill it
driver.findElement(By.name("uid")).sendKeys("Driver 3");
}
}
TestNG.XML
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="3" parallel="methods" > <test name="testGuru"> <classes> <class name="TestGuru99MultipleSession"> </class> </classes> </test> </suite>
Tesztesetek sorrendje és függősége
Beállíthatja a sorrendet és a függőséget Teszt eset végrehajtás.
Tegyük fel, hogy két teszteseted van: 'teszt'.Guru99TC1' és 'teszt'Guru99TC2' és a 'teszt' tesztesetet szeretnéd végrehajtaniGuru99TC2' a 'teszt' előttGuru99TC1'. Ebben az esetben a 'dependsOnMethods' attribútumot fogjuk használni a függőség és a végrehajtási sorrend létrehozásához.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite" thread-count="3" parallel="methods" > <test name="testGuru"> <classes> <class name="TestGuru99MultipleSession"> <include value="testGuru99TC1" dependsOnMethods=" testGuru99TC2"/> <include value="testGuru99TC2"/> </class> </classes> </test> </suite>
Összegzésként
- Új sessionID jön létre a WebDriver új példányához.
- Egy munkamenet egy adott böngészőhöz kötődik.
- A szál és a párhuzamos attribútum használatával párhuzamosan futtathatja a szkripteket.
- Az attribútum-függőség segítségével beállíthatja a sorrendet tesztelési végrehajtásra





