Parallel Execution in Selenium: Session Handling & Závislost TestNG

Obsah:

Anonim

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 Testovacího souboru XML budou probíhat paralelně.
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

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í.

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í