Cross-Browser-Tests mit Selenium WebTreiber
โก Intelligente Zusammenfassung
Cross-Browser-Tests mit Selenium WebDriver รผberprรผft, ob sich eine Webanwendung unter Chrome konsistent verhรคlt. FirefoxSafari und Edge. Dieses Tutorial zeigt, wie man sie kombiniert. Selenium WebDriver mit TestNG um parallele Sitzungen zu starten, das Rendering zu validieren und die Abdeckung รผber moderne Desktop- und mobile Browser hinweg zu skalieren.

Warum brauchen wir Cross-Browser-Tests?
Webbasierte Anwendungen unterscheiden sich stark von nativen Desktop-Anwendungen. Eine Webanwendung kann vom Endbenutzer in jedem beliebigen Browser geรถffnet werden. Manche Benutzer bevorzugen es beispielsweise, die Anwendung direkt im Browser zu รถffnen. https://twitter.com in Firefox, wรคhrend andere verwenden Chrome, Safariden Microsoft Edge.
Im folgenden Diagramm ist zu erkennen, dass in รคlteren Browsern die Anmeldebox von Twitter die abgerundeten Ecken nicht korrekt darstellt, wรคhrend der moderne Chrome die Ecken wie vorgesehen darstellt.
Wir mรผssen also sicherstellen, dass die Webanwendung in allen gรคngigen Browsern wie erwartet funktioniert, damit mehr Menschen darauf zugreifen und sie nutzen kรถnnen.
Dieses Ziel kann mit Cross-Browser erreicht werden. Tests des Produkts auf jedem Browser, der in den Geltungsbereich fรคllt.
Grรผnde fรผr browserรผbergreifende Probleme
- In verschiedenen Browsern stimmt die Schriftgrรถรe nicht รผberein.
- JavaDie Implementierungen der Skript-Engine unterscheiden sich in Chrome (V8). Firefox (SpiderMonkey), Safari (JavaScriptCore) und Edge.
- Unterschiede bei der Validierung von CSS und HTML, einschlieรlich der Behandlung von Herstellerprรคfixen.
- Inkonsistente oder unvollstรคndige Unterstรผtzung von HTML5- und ECMAScript-Funktionen in รคlteren Browserversionen.
- Seitenausrichtung, Div-Grรถรe und Flexbox- oder Grid-Rendering-Varianten.
- Unterschiede in Bildausrichtung und Farbprofil.
- Browserinkompatibilitรคt mit dem zugrunde liegenden Betriebssystem, einschlieรlich der Eigenheiten von mobilen WebView-Funktionen Android und iOS.
So fรผhren Sie browserรผbergreifende Tests durch
Wenn wir verwenden Selenium Mit WebDriver kรถnnen wir Testfรคlle gegen Chrome automatisieren. Firefox, Microsoft Edgeund Safari-Browser.
Um Testfรคlle mit verschiedenen Browsern gleichzeitig auf demselben Rechner auszufรผhren, kรถnnen wir die TestNG Rahmen mit Selenium WebDriver. Fรผr eine breitere Abdeckung von Betriebssystemen und Versionen kann dieselbe Suite รผber einen Remote-WebDriver-Endpunkt auf Cloud-Grids wie Sauce Labs, BrowserStack oder LambdaTest ausgerichtet werden.
Ihre testing.xml-Datei sieht folgendermaรen aus:
Diese test.xml wird dem zugeordnet Testfall Das sieht folgendermaรen aus:
Da die testing.xml mehrere Test-Tags enthรคlt ('ChromeTest', 'FirefoxTest', 'EdgeTest'), dieser Testfall wird einmal fรผr jeden Browser ausgefรผhrt.
Der erste Test โChromeTestโ รผbergibt dem Parameter โbrowserโ den Wert โchromeโ, sodass ChromeDriver ausgefรผhrt wird. Dieser Testfall wird im Chrome-Browser ausgefรผhrt.
Der zweite TestFirefoxโTestโ รผbergibt den Wert des Parameters โBrowserโ als โFirefox', Also FirefoxDer Treiber wird ausgefรผhrt. Dieser Testfall wird auf dem Firefox Browser. Das Hinzufรผgen eines Edge- oder Safari-Tests folgt dem gleichen Muster.
Guru99CrossBrowserScript.java
Komplett 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.openqa.selenium.safari.SafariDriver; 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 msedgedriver.exe System.setProperty("webdriver.edge.driver",".\\msedgedriver.exe"); //create Edge instance driver = new EdgeDriver(); } //Check if parameter passed as 'Safari' else if(browser.equalsIgnoreCase("Safari")){ //SafariDriver ships with macOS, no driver path needed driver = new SafariDriver(); } 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("https://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="3" 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 auf testing.xmlWรคhlen Sie โAusfรผhren alsโ und klicken Sie auf TestNG Suite.
Skalierung mit Cloud-Browser-Grids
Laufen Selenium WebDriver unterstรผtzt lokal zwei oder drei Browser, aber reale Benutzer greifen รผber Hunderte von Betriebssystem- und Browserkombinationen auf Websites zu. Cloud-Labore wie beispielsweise Saucenlabore, BrowserStack und LambdaTest Einen entfernten WebDriver-Endpunkt bereitstellen. Auf denselben verweisen Selenium Die Tests werden im Grid durchgefรผhrt, die gewรผnschten Fรคhigkeiten fรผr Browser, Version, Betriebssystem und Auflรถsung werden erfรผllt, und die Suite skaliert horizontal, ohne dass lokale Treiber verwaltet werden mรผssen.
Moderne Testraster bieten zudem KI-gestรผtzte Funktionen wie visuelle Regressionsvergleiche, selbstheilende Elementlokalisatoren und eine Bewertung der Fehleranfรคlligkeit, wodurch der Wartungsaufwand fรผr langlebige Cross-Browser-Testsuiten reduziert wird.
Hinweis: Das vorliegende Programm wurde erstellt und getestet am Selenium 4, Chrome, Firefox und Microsoft EdgeFalls die Programme einen Fehler ausgeben, aktualisieren Sie bitte die Treiberdateien, sodass sie mit Ihrer installierten Browserversion รผbereinstimmen, oder verwenden Sie Selenium Manager, der Treiber automatisch auflรถst.
Laden Sie Selenium Projektdateien fรผr die Demo in diesem Tutorial




