Cross-Browser-Tests mit Selenium WebTreiber

Cross-Browser-Tests mit Selenium

Browserübergreifendes Testen ist eine Art Funktionstest, um zu überprüfen, ob Ihre Webanwendung in verschiedenen Browsern wie erwartet funktioniert.

Cross-Browser-Tests mit Selenium

Warum brauchen wir Cross-Browser-Tests?

Webbasierte Anwendungen unterscheiden sich grundlegend von Windows Anwendungen. Eine Webanwendung kann vom Endbenutzer in jedem Browser geöffnet werden. Manche Leute ziehen es zum Beispiel vor, sich zu öffnen https://twitter.com in Firefox Browser, während andere es verwenden können Chrome-Browser or IE.

Im Diagramm unten können Sie das beobachten IE, das Anmeldefeld von Twitter zeigt nicht an allen Ecken eine Krümmung, aber wir können es im Chrome-Browser sehen.

Browserübergreifendes Testen

Daher müssen wir sicherstellen, dass die Webanwendung in allen gängigen Browsern wie erwartet funktioniert, damit mehr Menschen darauf zugreifen und sie nutzen können.

Dieses Motiv kann mit Cross Browser erfüllt werden Testen des Produkts.

Grund für browserübergreifende Probleme

  1. In verschiedenen Browsern stimmt die Schriftgröße nicht überein.
  2. JavaDie Skriptimplementierung kann unterschiedlich sein.
  3. Es kann einen Unterschied bei der CSS- und HTML-Validierung geben.
  4. Einige Browser unterstützen HTML5 immer noch nicht.
  5. Seitenausrichtung und Div-Größe.
  6. Bildausrichtung.
  7. Inkompatibilität des Browsers mit dem Betriebssystem. Usw.

So führen Sie browserübergreifende Tests durch

Wenn wir verwenden Selenium WebDriver können wir Testfälle mit Internet Explorer, FireFox, Chrome, Safari-Browser.

Um Testfälle mit verschiedenen Browsern gleichzeitig auf demselben Computer auszuführen, können wir integrieren TestNG Rahmen mit Selenium WebDriver.

Ihre test.xml wird so aussehen:

Browserübergreifendes Testen

Diese test.xml wird dem zugeordnet Testfall was so aussehen wird

Browserübergreifendes Testen

Hier, weil die Datei „testing.xml“ zwei Test-Tags hat („ChromeTest“,FirefoxTest‘) wird dieser Testfall zweimal für zwei verschiedene Browser ausgeführt.

Erster Test: „ChromeTest“ übergibt den Wert des Parameters „browser“ als „chrome“, sodass ChromeDriver ausgeführt wird. Dieser Testfall wird im Chrome-Browser ausgeführt.

Zweiter Test 'Firefox„Test“ übergibt den Wert des Parameters „Browser“ als „Firefox' Also FirefoxTreiber wird ausgeführt. Dieser Testfall wird auf Fire ausgeführtFox Browser.

Guru99CrossBrowserScript.java

Vollständiger Code:

package parallelTest;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class CrossBrowserScript {

	WebDriver driver;

	/**
	 * This function will execute before each Test tag in testng.xml
	 * @param browser
	 * @throws Exception
	 */
	@BeforeTest
	@Parameters("browser")
	public void setup(String browser) throws Exception{
		//Check if parameter passed from TestNG is 'firefox'
		if(browser.equalsIgnoreCase("firefox")){
		//create firefox instance
			System.setProperty("webdriver.gecko.driver", ".\\geckodriver.exe");
			driver = new FirefoxDriver();
		}
		//Check if parameter passed as 'chrome'
		else if(browser.equalsIgnoreCase("chrome")){
			//set path to chromedriver.exe
			System.setProperty("webdriver.chrome.driver",".\\chromedriver.exe");
			//create chrome instance
			driver = new ChromeDriver();
		}
		//Check if parameter passed as 'Edge'
				else if(browser.equalsIgnoreCase("Edge")){
					//set path to Edge.exe
					System.setProperty("webdriver.edge.driver",".\\MicrosoftWebDriver.exe");
					//create Edge instance
					driver = new EdgeDriver();
				}
		else{
			//If no browser passed throw exception
			throw new Exception("Browser is not correct");
		}
		driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
	}
	
	@Test
	public void testParameterWithXML() throws InterruptedException{
		driver.get("http://demo.guru99.com/V4/");
		//Find user name
		WebElement userName = driver.findElement(By.name("uid"));
		//Fill user name
		userName.sendKeys("guru99");
		//Find password
		WebElement password = driver.findElement(By.name("password"));
		//Fill password
		password.sendKeys("guru99");
	}
}

testing.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="TestSuite" thread-count="2" parallel="tests" >

<test name="ChromeTest">

<parameter name="browser" value="Chrome" />

<classes>

<class name="parallelTest.CrossBrowserScript">

</class>

</classes>

</test>

<test name="FirefoxTest">

<parameter name="browser" value="Firefox" />

<classes>

<class name="parallelTest.CrossBrowserScript">

</class>

</classes>

</test>

<test name="EdgeTest">

<parameter name="browser" value="Edge" />

<classes>

<class name="parallelTest.CrossBrowserScript">

</class>

</classes>

</test>

</suite>

Anmerkungen: Um den Test auszuführen, klicken Sie mit der rechten Maustaste darauf test.xml, Wählen Sie „Ausführen als“ und klicken Sie auf TestNG

Browserübergreifendes Testen

Zusammenfassung

  1. Cross-Browser-Testing ist eine Technik zum Testen von Webanwendungen mit verschiedenen Webbrowsern.
  2. Selenium Kann verschiedene Arten unterstützen browserübergreifendes Test-Tool für die Automatisierung.
  3. Selenium kann integriert werden mit TestNG um Multi-Browser-Tests durchzuführen.
  4. Über die Parameter in „testing.xml“ können wir den Browsernamen übergeben und in einem Testfall eine entsprechende WebDriver-Referenz erstellen.

Hinweis: Das vorliegende Programm wurde auf Selenium 3.0.1, Chrome 56.0.2924.87 erstellt und getestet. Firefox 47.0.2 & Microsoft Edge 14.14393. Sollten die Programme einen Fehler ausgeben, aktualisieren Sie bitte den Treiber

Laden Sie Selenium Projektdateien für die Demo in diesem Tutorial