Párhuzamos végrehajtás be Selenium: Munkamenetkezelés és TestNG Függőség

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.

Munkamenet kezelése

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 ().

Érje el a munkamenet-kezelést Selenium webdriver

Tehát bármi, amit ezután teszünk, csak az adott helyen fog végrehajtani Firefox böngésző munkamenet.

Érje el a munkamenet-kezelést Selenium webdriver

Mivel ez egy beépített funkció, nincs szükség kifejezetten a munkamenet-azonosító hozzárendelésére

Példa a kódra: 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("http://demo.guru99.com/V4/");
    
    //Second session of WebDriver
    WebDriver driver2 = new FirefoxDriver();
    //Goto guru99 site
    driver2.get("http://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

Futtasson párhuzamos teszteket a Selenium

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 http://demo.guru99.com/

A teljes projekt így fog kinézni:

Futtasson párhuzamos teszteket a Selenium

TestGuru99MultipleSession.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("http://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("http://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("http://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 van két teszteseted , a „testGuru99TC1” és a „testGuru99TC2”, és a „testGuru99TC2” tesztesetet szeretnéd végrehajtani a „testGuru99TC1” előtt. Ebben az esetben a 'dependsOnMethods' attribútumot használjuk a függőség és a végrehajtási sorrend megállapítására.

<?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