Parallelle uitvoering in selenium: behandeling van sessies & TestNG-afhankelijkheid

Inhoudsopgave:

Anonim

Laten we eerst begrijpen hoe u scripts parallel kunt uitvoeren

Waarom hebben we sessiebehandeling nodig?

Tijdens het uitvoeren van de test moet de Selenium WebDriver de hele tijd communiceren met de browser om bepaalde opdrachten uit te voeren. Op het moment van uitvoering is het ook mogelijk dat, voordat de huidige uitvoering is voltooid, iemand anders begint met de uitvoering van een ander script, op dezelfde machine en in hetzelfde type browser.

In zo'n situatie hebben we een mechanisme nodig waardoor onze twee verschillende executies elkaar niet mogen overlappen. Dit kan worden bereikt met behulp van Session Handling in Selenium.

Hoe Session Handling bereiken in Selenium WebDriver?

Als u de broncode van Selenium WebDriver controleert, vindt u een variabele met de naam 'sessionId'. Telkens wanneer we een nieuw exemplaar van een WebDriver-object maken, wordt een nieuwe 'sessionId' gegenereerd en toegevoegd aan dat specifieke Firefox / Chrome / IE-stuurprogramma ().

Dus alles wat we hierna doen, wordt alleen in die specifieke Firefox-browsersessie uitgevoerd.

Aangezien dit een ingebouwde functionaliteit is, is het niet expliciet nodig om de sessie-id toe te wijzen

Codevoorbeeld: hier worden twee verschillende sessies gegenereerd voor twee verschillende WebDriver.

importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.firefox.FirefoxDriver;openbare les SessionHandling {public static void main (String… strings) {// Eerste sessie van WebDriverWebDriver-stuurprogramma = nieuwe FirefoxDriver ();// Ga naar de guru99-sitedriver.get ("http://demo.guru99.com/V4/");// Tweede sessie van WebDriverWebDriver-stuurprogramma2 = nieuwe FirefoxDriver ();// Ga naar de guru99-sitedriver2.get ("http://demo.guru99.com/V4/");​​

Hoe u parallelle tests uitvoert met selenium

Er zijn situaties waarin u meerdere tests tegelijkertijd wilt uitvoeren.

In dergelijke gevallen kan men het attribuut "parallel" gebruiken

Het parallelle attribuut van de suite-tag kan vier waarden accepteren:

testen Alle testgevallen in de -tag van het Testing xml-bestand worden parallel uitgevoerd.
klassen Alle testcases in een Java-klasse zullen parallel lopen
methoden Alle methoden met @Test-annotatie worden parallel uitgevoerd.
gevallen Testgevallen in dezelfde instantie worden parallel uitgevoerd, maar twee methoden van twee verschillende instanties worden in verschillende thread uitgevoerd.

Met het attribuut aantal threads kunt u specificeren hoeveel threads voor deze uitvoering moeten worden toegewezen.

Volledig voorbeeld: in dit voorbeeld worden drie testgevallen parallel uitgevoerd en worden aanmeldingsgegevens ingevuld in http://demo.guru99.com

Het complete project ziet er als volgt uit:

TestGuru99MultipleSession.java

importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.chrome.ChromeDriver;importeer org.testng.annotations.Test;openbare klasse TestGuru99MultipleSession {@Testopenbare ongeldige executSessionOne () {// Eerste sessie van WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-stuurprogramma = nieuwe ChromeDriver ();// Ga naar de guru99-sitedriver.get ("http://demo.guru99.com/V4/");// zoek het tekstvak van de gebruikersnaam en vul het indriver.findElement (By.name ("uid")). sendKeys ("Driver 1");​@Testopenbare leegte executeSessionTwo () {// Tweede sessie van WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-stuurprogramma = nieuwe ChromeDriver ();// Ga naar de guru99-sitedriver.get ("http://demo.guru99.com/V4/");// zoek het tekstvak van de gebruikersnaam en vul het indriver.findElement (By.name ("uid")). sendKeys ("Driver 2");​@Testopenbare ongeldige executSessionThree () {// Derde sessie van WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-stuurprogramma = nieuwe ChromeDriver ();// Ga naar de guru99-sitedriver.get ("http://demo.guru99.com/V4/");// zoek het tekstvak van de gebruikersnaam en vul het indriver.findElement (By.name ("uid")). sendKeys ("Driver 3");​​

TestNG.XML

Test Case volgorde en afhankelijkheid

U kunt de volgorde en afhankelijkheid van de uitvoering van testcases instellen.

Stel dat u twee testgevallen heeft, 'testGuru99TC1' en 'testGuru99TC2' en u wilt testcase 'testGuru99TC2' uitvoeren vóór 'testGuru99TC1'. In dat geval zullen we het attribuut 'dependOnMethods' gebruiken om afhankelijkheid en uitvoeringsvolgorde te maken.

Overzicht

  • Er wordt een nieuwe sessionID aangemaakt voor een nieuw exemplaar van WebDriver.
  • Een sessie zal binden met een bepaalde browser.
  • Door attribuutthread en parallel te gebruiken, voert u uw scripts parallel uit.
  • U kunt kenmerkafhankelijkheid gebruiken om de volgorde in te stellen om de uitvoering te testen