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.
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.
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
- In verschiedenen Browsern stimmt die Schriftgröße nicht überein.
- JavaDie Skriptimplementierung kann unterschiedlich sein.
- Es kann einen Unterschied bei der CSS- und HTML-Validierung geben.
- Einige Browser unterstützen HTML5 immer noch nicht.
- Seitenausrichtung und Div-Größe.
- Bildausrichtung.
- 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:
Diese test.xml wird dem zugeordnet Testfall was so aussehen wird
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
Zusammenfassung
- Cross-Browser-Testing ist eine Technik zum Testen von Webanwendungen mit verschiedenen Webbrowsern.
- Selenium Kann verschiedene Arten unterstützen browserübergreifendes Test-Tool für die Automatisierung.
- Selenium kann integriert werden mit TestNG um Multi-Browser-Tests durchzuführen.
- Ü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