Parallele Ausführung in Selen: Sitzungsbehandlung & TestNG-Abhängigkeit

Inhaltsverzeichnis:

Anonim

Lassen Sie uns zunächst verstehen, wie Skripte parallel ausgeführt werden

Warum brauchen wir Session Handling?

Während der Testausführung muss der Selenium WebDriver ständig mit dem Browser interagieren, um bestimmte Befehle auszuführen. Zum Zeitpunkt der Ausführung ist es auch möglich, dass vor Abschluss der aktuellen Ausführung eine andere Person die Ausführung eines anderen Skripts auf demselben Computer und in demselben Browsertyp startet.

In einer solchen Situation brauchen wir einen Mechanismus, durch den sich unsere beiden unterschiedlichen Ausführungen nicht überschneiden sollten. Dies kann mithilfe der Sitzungsbehandlung in Selen erreicht werden.

Wie erreicht man die Sitzungsbehandlung in Selenium WebDriver?

Wenn Sie den Quellcode von Selenium WebDriver überprüfen, finden Sie eine Variable mit dem Namen 'sessionId'. Jedes Mal, wenn wir eine neue Instanz eines WebDriver-Objekts erstellen, wird eine neue 'sessionId' generiert und an diesen bestimmten Firefox / Chrome / IE-Treiber () angehängt.

Alles, was wir danach tun, wird nur in dieser bestimmten Firefox-Browsersitzung ausgeführt.

Da es sich um eine integrierte Funktionalität handelt, muss die Sitzungs-ID nicht explizit zugewiesen werden

Codebeispiel: Hier werden zwei verschiedene Sitzungen für zwei verschiedene WebDriver generiert.

import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;öffentliche Klasse SessionHandling {public static void main (String… strings) {// Erste Sitzung von WebDriverWebDriver-Treiber = neuer FirefoxDriver ();// Gehe zur Guru99 Seitedriver.get ("http://demo.guru99.com/V4/");// Zweite Sitzung von WebDriverWebDriver driver2 = neuer FirefoxDriver ();// Gehe zur Guru99 Seitedriver2.get ("http://demo.guru99.com/V4/");}}}}

So führen Sie parallele Tests mit Selen durch

Es gibt Situationen, in denen Sie mehrere Tests gleichzeitig ausführen möchten.

In solchen Fällen kann man das Attribut "parallel" verwenden

Das parallele Attribut des Suite-Tags kann vier Werte annehmen:

Tests Alle Testfälle im -Tag der Testing xml-Datei werden parallel ausgeführt.
Klassen Alle Testfälle innerhalb einer Java-Klasse werden parallel ausgeführt
Methoden Alle Methoden mit @ Test-Annotation werden parallel ausgeführt.
Instanzen Testfälle in derselben Instanz werden parallel ausgeführt, aber zwei Methoden von zwei verschiedenen Instanzen werden in unterschiedlichen Threads ausgeführt.

Mit dem Attribut thread-count können Sie angeben, wie viele Threads für diese Ausführung zugewiesen werden sollen.

Vollständiges Beispiel: In diesem Beispiel werden drei Testfälle parallel ausgeführt und die Anmeldedaten in http://demo.guru99.com ausgefüllt

Das vollständige Projekt sieht folgendermaßen aus:

TestGuru99MultipleSession.java

import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;öffentliche Klasse TestGuru99MultipleSession {@Prüfungpublic void executeSessionOne () {// Erste Sitzung von WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-Treiber = neuer ChromeDriver ();// Gehe zur Guru99 Seitedriver.get ("http://demo.guru99.com/V4/");// Finde das Textfeld Benutzername und fülle es ausdriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}}@Prüfungpublic void executeSessionTwo () {// Zweite Sitzung von WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-Treiber = neuer ChromeDriver ();// Gehe zur Guru99 Seitedriver.get ("http://demo.guru99.com/V4/");// Finde das Textfeld Benutzername und fülle es ausdriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}}@Prüfungpublic void executeSessionThree () {// Dritte Sitzung von WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-Treiber = neuer ChromeDriver ();// Gehe zur Guru99 Seitedriver.get ("http://demo.guru99.com/V4/");// Finde das Textfeld Benutzername und fülle es ausdriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}}}

TestNG.XML

Testfallreihenfolge und Abhängigkeit

Sie können die Reihenfolge und Abhängigkeit der Testfallausführung festlegen.

Angenommen, Sie haben zwei Testfälle, 'testGuru99TC1' und 'testGuru99TC2', und Sie möchten den Testfall 'testGuru99TC2' vor 'testGuru99TC1' ausführen. In diesem Fall verwenden wir das Attribut 'definedOnMethods', um die Abhängigkeit und die Reihenfolge der Ausführung festzulegen.

 ab

Zusammenfassung

  • Eine neue Sitzungs-ID wird für eine neue Instanz von WebDriver erstellt.
  • Eine Sitzung wird an einen bestimmten Browser gebunden.
  • Mit Attribut-Thread und parallel führen Sie Ihre Skripte parallel aus.
  • Sie können die Attributabhängigkeit verwenden, um die Reihenfolge für die Testausführung festzulegen