Paralelní provedení v Selenium: Zpracování relací & TestNG Závislost

Abychom pochopili, jak paralelně spouštět skripty, nejprve si porozumějme

Proč potřebujeme Zpracování relací?

Během provádění testu, Selenium WebDriver musí neustále komunikovat s prohlížečem, aby mohl provádět dané příkazy. V době provádění je také možné, že před dokončením aktuálního provádění někdo jiný spustí provádění jiného skriptu na stejném počítači a ve stejném typu prohlížeče.

Zpracování relace

V takové situaci potřebujeme mechanismus, pomocí kterého by se naše dvě různé exekuce navzájem nepřekrývaly. Toho lze dosáhnout pomocí Session Handling in Selenium.

Jak dosáhnout Zpracování relace v Selenium WebDriver?

Pokud zkontrolujete zdrojový kód Selenium WebDriver, najdete proměnnou s názvem „sessionId“. Kdykoli vytvoříme novou instanci objektu WebDriver, vygeneruje se nové 'sessionId' a připojí se s tímto konkrétním Firefox/Chrome/IE Driver ().

Dosáhněte zpracování relace Selenium webový ovladač

Takže cokoli, co uděláme po tomto, se provede pouze v tomto konkrétním Firefox relaci prohlížeče.

Dosáhněte zpracování relace Selenium webový ovladač

Protože se jedná o vestavěnou funkci, není třeba explicitně přiřazovat ID relace

Příklad kódu: Zde budou vygenerovány dvě různé relace pro dva různé WebDriver.

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/");
}
}

Jak spouštět paralelní testy s Selenium

Existují situace, kdy chcete spustit více testů současně.

V takových případech lze použít atribut „paralelní“.

Spusťte paralelní testy s Selenium

Paralelní atribut značky sady může přijímat čtyři hodnoty:

Testy Všechny testovací případy uvnitř tag of Testování xml poběží paralelně.
třídy Všechny testovací případy uvnitř a Java třída bude probíhat paralelně
metody Všechny metody s anotací @Test se budou provádět paralelně.
instance Testovací případy ve stejné instanci se budou provádět paralelně, ale dvě metody dvou různých instancí poběží v jiném vláknu.

Atribut thread-count vám umožňuje určit, kolik vláken by mělo být přiděleno pro toto spuštění.

Úplný příklad: V tomto příkladu poběží paralelně tři testovací případy a vyplní přihlašovací údaje https://demo.guru99.com/

Kompletní projekt bude vypadat takto:

Spusťte paralelní testy s 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("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>

Pořadí a závislost testovacího případu

Můžete nastavit pořadí a závislost Testovací případ provedení.

Předpokládejme, že máte dva testovací případy „testGuru99TC1“ a „testGuru99TC2“ a chcete provést testovací případ „testGuru99TC2“ před „testGuru99TC1“. V takovém případě použijeme atribut 'dependsOnMethods' k vytvoření závislosti a pořadí provádění.

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

Shrnutí

  • Pro novou instanci WebDriver se vytvoří nové ID relace.
  • Jedna relace se spojí s jedním konkrétním prohlížečem.
  • Pomocí vláken atributů a paralelně spouštíte své skripty paralelně.
  • Závislost atributů můžete použít k nastavení příkazu k testování provedení