Esecuzione parallela in selenio: gestione delle sessioni e amp; Dipendenza da TestNG

Sommario:

Anonim

Per capire come eseguire gli script in parallelo, dobbiamo prima capire

Perché abbiamo bisogno della gestione delle sessioni?

Durante l'esecuzione del test, Selenium WebDriver deve sempre interagire con il browser per eseguire determinati comandi. Al momento dell'esecuzione, è anche possibile che, prima del completamento dell'esecuzione corrente, qualcun altro inizi l'esecuzione di un altro script, nella stessa macchina e nello stesso tipo di browser.

In tale situazione, abbiamo bisogno di un meccanismo in base al quale le nostre due diverse esecuzioni non dovrebbero sovrapporsi l'una con l'altra. Ciò può essere ottenuto utilizzando Session Handling in Selenium.

Come ottenere la gestione della sessione in Selenium WebDriver?

Se controlli il codice sorgente di Selenium WebDriver, troverai una variabile chiamata "sessionId". Ogni volta che creiamo una nuova istanza di un oggetto WebDriver, verrà generato un nuovo 'sessionId' e allegato a quel particolare driver Firefox / Chrome / IE ().

Quindi tutto ciò che facciamo dopo verrà eseguito solo in quella particolare sessione del browser Firefox.

Poiché si tratta di una funzionalità incorporata, non è necessario assegnare l'ID di sessione

Esempio di codice: qui verranno generate due diverse sessioni per due diversi WebDriver.

import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;public class SessionHandling {public static void main (String ... strings) {// Prima sessione di WebDriverDriver WebDriver = nuovo FirefoxDriver ();// Sito Goto guru99driver.get ("http://demo.guru99.com/V4/");// Seconda sessione di WebDriverWebDriver driver2 = nuovo FirefoxDriver ();// Sito Goto guru99driver2.get ("http://demo.guru99.com/V4/");}}

Come eseguire test paralleli con selenio

Ci sono situazioni in cui desideri eseguire più test contemporaneamente.

In questi casi, è possibile utilizzare l'attributo "parallelo"

L'attributo parallelo del tag suite può accettare quattro valori:

test Tutti i casi di test all'interno del tag del file xml di test verranno eseguiti in parallelo.
classi Tutti i casi di test all'interno di una classe Java verranno eseguiti in parallelo
metodi Tutti i metodi con l'annotazione @Test verranno eseguiti in parallelo.
istanze I casi di test nella stessa istanza verranno eseguiti in parallelo ma due metodi di due istanze diverse verranno eseguiti in thread diversi.

L'attributo thread-count consente di specificare quanti thread devono essere allocati per questa esecuzione.

Esempio completo: in questo esempio, tre casi di test verranno eseguiti in parallelo e riempiranno i dati di accesso in http://demo.guru99.com

Il progetto completo avrà il seguente aspetto:

TestGuru99MultipleSession.java

import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;public class TestGuru99MultipleSession {@Testpublic void executSessionOne () {// Prima sessione di WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = nuovo ChromeDriver ();// Sito Goto guru99driver.get ("http://demo.guru99.com/V4/");// trova la casella di testo del nome utente e riempiladriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Testpublic void executeSessionTwo () {// Seconda sessione di WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = nuovo ChromeDriver ();// Sito Goto guru99driver.get ("http://demo.guru99.com/V4/");// trova la casella di testo del nome utente e riempiladriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Testpublic void executSessionThree () {// Terza sessione di WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = nuovo ChromeDriver ();// Sito Goto guru99driver.get ("http://demo.guru99.com/V4/");// trova la casella di testo del nome utente e riempiladriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}

TestNG.XML

Ordine e dipendenza dello scenario di test

È possibile impostare l'ordine e la dipendenza dell'esecuzione del test case.

Supponiamo di avere due casi di test, "testGuru99TC1" e "testGuru99TC2" e di voler eseguire lo scenario di test "testGuru99TC2" prima di "testGuru99TC1". In tal caso useremo l'attributo "dipendeOnMethods" per creare dipendenza e ordine di esecuzione.

Sommario

  • Viene creato un nuovo sessionID per una nuova istanza di WebDriver.
  • Una sessione si legherà a un browser particolare.
  • Usando l'attributo thread e parallel, esegui i tuoi script in parallelo.
  • È possibile utilizzare la dipendenza dagli attributi per impostare l'ordine per testare l'esecuzione