Testen in mehreren Browsern mit TestNG

In diesem Tutorial werden wir das Testen von mehreren Browsern in Selenium zusammen mit seiner Implementierung behandeln. Zu diesem Zweck werden wir Selenium mit TestNG integrieren und die @Parameter-Annotation von TestNG verwenden, um das Testskript mit verschiedenen Browserwerten zu parametrisieren.
Beachten Sie auch, dass Multi-Browser-Tests auch mit Selenium Grid durchgeführt werden können. Hier werden wir TestNG und Selenium WebDriver jedoch nur für die Implementierung von Cross-Browser-Tests verwenden.
Inhaltsübersicht
Was sind Multi-Cross-Browser-Tests?
Cross-Browser-Tests sind eine Art von Tests, bei denen die zu testende Anwendung mit mehreren unterstützten Browsern getestet wird. Die Notwendigkeit von Multi-Browser-Tests ergibt sich aus der Tatsache, dass verschiedene Browser unterschiedliche UI-Implementierungen haben. Es gibt also keine Möglichkeit, dafür zu sorgen, dass Anwendungen, die in Chrome laufen, auch nahtlos in IE laufen.
Browserübergreifende Tests in Selenium und TestNG
Cross-Browser-Tests in Selenium können mit Hilfe von Browser-Variablen-Parametern durchgeführt werden. Wir können die @Parameter-Annotation in TestNG verwenden, um die Browser-Variable zu parametrisieren. Mit der @Parameter-Annotation können wir verschiedene Browserwerte aus der Datei testng.xml an die Testskripte übergeben.
Der Wert des Browser-Parameters kann dann zur Instanziierung der entsprechenden Selenium WebDriver-Klasse verwendet werden. Da der Browser-Wert in allen Testmethoden verwendet wird, ist es besser, die Browser-Variable in der @BeforeTest-Methode zu verwenden.
Die Methode beforeTest mit dem Parameter @Parameter TestNG sieht dann so aus:
@Parameters("browser")
@BeforeTest
public void setBrowser(String browser)
{
if (browser.equalsIgnoreCase("Firefox")) {
driver = new FirefoxDriver();
}
else if (browser.equalsIgnoreCase("Chrome")) {
System.setProperty("webdriver.chrome.driver",
+ pathToChromeDriverBinary + "chromedriver.exe");
driver = new ChromeDriver();
}
else {
throw new IllegalArgumentException("Invalid browser value!!");
}
driver.get(URL);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
}
Wie bereits erwähnt, wird der Wert der Browservariable über die Datei testng.xml an die Testskripte übergeben. Diese Datei testng.xml enthält ein Parameter-Tag, das die Browser-Variable und ihren Wert enthält.
Hier erstellen wir zwei Tests, jeweils einen für Firefox und Chrome mit unterschiedlichen Browserwerten. Zum Verständnis des Konzepts der Testparametrisierung siehe den folgenden Ausschnitt aus der Datei testng.xml.
Beachten Sie auch, dass die Angabe von parallel=“tests“ im Suite-Tag dazu führt, dass die beiden Tests parallel laufen.
<suite name="MultiBrowserSuite" parallel="tests" thread-count="2">
<test name="TestFirefox">
<parameter name="browser" value="Firefox"/>
<classes>
<class name="sampleTestPackage.MultiBrowserTest"/>
</classes>
</test>
<test name="TestChrome">
<parameter name="browser" value="Chrome"/>
<classes>
<class name="sampleTestPackage.MultiBrowserTest"/>
</classes>
</test>
</suite>
Wenn Sie den Test mithilfe der Datei testng.xml ausführen, wird der Test parallel für alle angegebenen Browser (in unserem Fall Firefox und Chrome) ausgeführt.