Abychom pochopili, jak paralelně spouštět skripty, pojďme nejprve porozumět
Proč potřebujeme Session Handling?
Během provádění testu musí Selenium WebDriver po celou dobu interagovat s prohlížečem, aby provedl dané příkazy. V době provádění je také možné, že před dokončením aktuálního spuštění někdo jiný zahájí provádění jiného skriptu, ve stejném počítači a ve stejném typu prohlížeče.
V takové situaci potřebujeme mechanismus, kterým by se naše dvě různé popravy neměly navzájem překrývat. Toho lze dosáhnout pomocí Session Handling v selenu.
Jak dosáhnout zpracování relace v selenu 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 k danému konkrétnímu ovladači Firefox / Chrome / IE ().
Cokoli, co poté uděláme, se tedy provede pouze v dané konkrétní relaci prohlížeče Firefox.
Jelikož se jedná o vestavěnou funkci, není nutné explicitně přiřadit 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;veřejná třída SessionHandling {public static void main (String ... strings) {// První relace WebDriverOvladač WebDriver = nový FirefoxDriver ();// Přejít na web guru99driver.get ("http://demo.guru99.com/V4/");// Druhá relace WebDriverDriver WebDriver2 = nový FirefoxDriver ();// Přejít na web guru99driver2.get ("http://demo.guru99.com/V4/");}}
Jak provádět paralelní testy se selenem
Existují situace, kdy chcete spustit více testů současně.
V takových případech lze použít atribut „paralelní“
Atribut paralelní značky sady může přijmout čtyři hodnoty:
testy | Všechny testovací případy uvnitř značky |
třídy | Všechny testovací případy uvnitř třídy Java poběží paralelně |
metody | Všechny metody s anotací @Test se budou provádět paralelně. |
instance | Testovací případy ve stejné instanci budou spuštěny paralelně, ale dvě metody dvou různých instancí budou spuštěny v různých vláknech. |
Atribut počet vláken umožňuje určit, kolik vláken by mělo být přiděleno pro toto provedení.
Kompletní příklad: V tomto příkladu poběží paralelně tři testovací případy a vyplní přihlašovací údaje na stránce http://demo.guru99.com
Kompletní projekt bude vypadat takto:
TestGuru99MultipleSession.java
import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;veřejná třída TestGuru99MultipleSession {@Testpublic void executSessionOne () {// První relace WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Ovladač WebDriver = nový ChromeDriver ();// Přejít na web guru99driver.get ("http://demo.guru99.com/V4/");// vyhledejte textové pole pro uživatelské jméno a vyplňte jejdriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Testpublic void executeSessionTwo () {// Druhá relace WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Ovladač WebDriver = nový ChromeDriver ();// Přejít na web guru99driver.get ("http://demo.guru99.com/V4/");// vyhledejte textové pole pro uživatelské jméno a vyplňte jejdriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Testpublic void executSessionThree () {// Třetí relace WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Ovladač WebDriver = nový ChromeDriver ();// Přejít na web guru99driver.get ("http://demo.guru99.com/V4/");// vyhledejte textové pole pro uživatelské jméno a vyplňte jejdriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}
TestNG.XML
xml version = "1.0" encoding = "UTF-8"?>
Pořadí testovacích případů a závislost
Můžete nastavit pořadí a závislost provedení testovacího případu.
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í provedení.
xml version = "1.0" encoding = "UTF-8"?>
souhrn
- Pro novou instanci WebDriver je vytvořeno nové ID relace.
- Jedna relace se sváže s jedním konkrétním prohlížečem.
- Pomocí atributového vlákna a paralelně spouštíte skripty paralelně.
- Můžete použít závislost atributů k nastavení pořadí pro testování provádění