Parallele Ausführung in Selenium: Sitzungsbearbeitung & TestNG Abhängigkeit

Um zu verstehen, wie Skripte parallel ausgeführt werden, sollten wir uns zunächst damit befassen

Warum brauchen wir Session Handling?

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

Sitzungsbehandlung

In einer solchen Situation benötigen wir einen Mechanismus, durch den sich unsere beiden unterschiedlichen Ausführungen nicht überschneiden dürfen. Dies kann mithilfe der Sitzungsbehandlung in erreicht werden Selenium.

So erreichen Sie die Sitzungsbehandlung in Selenium WebDriver?

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

Erreichen Sie die Sitzungsbearbeitung in Selenium WebTreiber

Alles, was wir danach tun, wird also nur in diesem speziellen Fall ausgeführt Firefox Browser-Sitzung.

Erreichen Sie die Sitzungsbearbeitung in Selenium WebTreiber

Da es sich um eine integrierte Funktionalität handelt, besteht keine explizite Notwendigkeit, die Sitzungs-ID zuzuweisen

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

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class SessionHandling {
public static void main(String...strings ){
    //First session of WebDriver
    WebDriver driver = new FirefoxDriver();
    //Goto guru99 site
    driver.get("http://demo.guru99.com/V4/");
    
    //Second session of WebDriver
    WebDriver driver2 = new FirefoxDriver();
    //Goto guru99 site
    driver2.get("http://demo.guru99.com/V4/");
}
}

So führen Sie parallele Tests mit aus Selenium

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

In solchen Fällen kann man das Attribut „parallel“ verwenden

Führen Sie parallele Tests mit aus Selenium

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

Tests Alle Testfälle darin Tag von Testen xml-Datei wird parallel ausgeführt.
Unterricht Alle Testfälle in a Java Der Unterricht findet parallel statt
Methoden Alle Methoden mit der Annotation @Test 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 Anmeldedaten eingegeben http://demo.guru99.com/

Das vollständige Projekt sieht folgendermaßen aus:

Führen Sie parallele Tests mit aus Selenium

TestGuru99MultipleSession.java

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class TestGuru99MultipleSession {
    @Test    
    public void executSessionOne(){
            //First session of WebDriver
        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
            WebDriver driver = new ChromeDriver();
            //Goto guru99 site
            driver.get("http://demo.guru99.com/V4/");
            //find user name text box and fill it
            driver.findElement(By.name("uid")).sendKeys("Driver 1");
            
        }
        
    @Test    
        public void executeSessionTwo(){
            //Second session of WebDriver
        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
        WebDriver driver = new ChromeDriver();
            //Goto guru99 site
        driver.get("http://demo.guru99.com/V4/");
        //find user name text box and fill it
        driver.findElement(By.name("uid")).sendKeys("Driver 2");
        
        }
        
    @Test    
        public void executSessionThree(){
            //Third session of WebDriver
        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
        WebDriver driver = new ChromeDriver();
            //Goto guru99 site
        driver.get("http://demo.guru99.com/V4/");
        //find user name text box and fill it
        driver.findElement(By.name("uid")).sendKeys("Driver 3");
        
        }        
}

TestNG.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="3" parallel="methods" >
<test name="testGuru">
<classes>
<class name="TestGuru99MultipleSession">
</class>
</classes>
</test>
</suite>

Reihenfolge und Abhängigkeit der Testfälle

Sie können die Reihenfolge und Abhängigkeit festlegen Testfall Ausführung.

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 „dependsOnMethods“, um Abhängigkeiten und die Reihenfolge der Ausführung festzulegen.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="3" parallel="methods" >
<test name="testGuru">
<classes>
<class name="TestGuru99MultipleSession">
<include value="testGuru99TC1" dependsOnMethods=" testGuru99TC2"/>
<include value="testGuru99TC2"/>
</class>
</classes>
</test>
</suite>

Zusammenfassung

  • Für eine neue Instanz von WebDriver wird eine neue Sitzungs-ID erstellt.
  • Eine Sitzung wird an einen bestimmten Browser gebunden.
  • Mithilfe der Attribute „Thread“ und „Parallel“ führen Sie Ihre Skripte parallel aus.
  • Mithilfe der Attributabhängigkeit können Sie die Reihenfolge für die Testausführung festlegen