Cross Browser Test vha Selenium webdriver

⚡ Smart opsummering

Cross Browser Test vha Selenium WebDriver verificerer, at en webapplikation opfører sig ensartet i Chrome, Firefox, Safari og Edge. Denne vejledning demonstrerer, hvordan man kombinerer Selenium WebDriver med TestNG at starte parallelle sessioner, validere rendering og skalere dækning på tværs af moderne desktop- og mobilbrowsere.

  • 🌐 Hvorfor det er vigtigt: Rigtige brugere åbner den samme side i forskellige browsere, så layouts, scripts og stilarter skal fungere overalt for at beskytte konverteringer og tilgængelighed.
  • 🧪 Selenium WebDriver-opsætning: Konfigurer ChromeDriver, GeckoDriver, EdgeDriver og SafariDriver, og vælg derefter den rigtige instans via en enkelt parameteriseret metode.
  • ???? TestNG parallelle løb: En testing.xml-fil med parallel="tests" aktiverer Chrome, Firefoxog Edge-pakker på samme tid, hvilket reducerer feedbackcyklusser for store regressionspakker.
  • Almindelige opdagede defekter: Skrifttypeskalering, CSS-layoutskift, JavaHuller i script-polyfill, HTML5-understøttelse, billedretning og uoverensstemmelser mellem operativsystem og browser dukker hurtigt op.
  • 🛠️ Cloud-laboratorier og AI: Sauce Labs, BrowserStack og LambdaTest udvider dækningen til tusindvis af OS-browser-par, og AI-drevet visuel regression og selvreparerende lokaliseringsværktøjer øger pålideligheden.

Test på tværs af browsere i Selenium webdriver

Hvorfor har vi brug for test på tværs af browsere?

Webbaserede applikationer er meget forskellige fra native desktop-applikationer. En webapplikation kan åbnes i enhver browser af slutbrugeren. For eksempel foretrækker nogle at åbne https://twitter.com in Firefox, mens andre bruger Chrome, Safari eller Microsoft Edge.

I diagrammet nedenfor kan du se, at i ældre browsere gengiver Twitters loginboks ikke afrundede hjørner korrekt, mens moderne Chrome gengiver hjørnerne som designet.

Test af tværbrowser

Så vi skal sikre, at webapplikationen fungerer som forventet i alle populære browsere, så flere kan få adgang til den og bruge den.

Dette mål kan opfyldes med Cross Browser Test af produktet på alle browsere i omfanget.

Årsager til problemer på tværs af browsere

  1. Skriftstørrelsen stemmer ikke overens i forskellige browsere.
  2. JavaImplementeringer af scriptprogrammer varierer på tværs af Chrome (V8), Firefox (SpiderMonkey), Safari (JavaScriptCore) og Edge.
  3. Forskelle i CSS- og HTML-validering, herunder håndtering af leverandørpræfikser.
  4. Inkonsekvent eller delvis understøttelse af HTML5- og ECMAScript-funktioner i ældre browserversioner.
  5. Sidejustering, div-størrelse og variationer i flexbox- eller grid-gengivelse.
  6. Billedorientering og forskelle i farveprofil.
  7. Browserinkompatibilitet med det underliggende operativsystem, herunder særheder i Mobile WebView Android og iOS.

Sådan laver du test på tværs af browsere

Hvis vi bruger Selenium WebDriver, vi kan automatisere testcases mod Chrome, Firefox, Microsoft Edgeog Safari-browsere.

For at udføre testcases med forskellige browsere på den samme maskine på samme tid, kan vi integrere TestNG rammer med Selenium WebDriver. For bredere OS- og versionsdækning kan den samme suite peges mod cloud-gitre som Sauce Labs, BrowserStack eller LambdaTest via et eksternt WebDriver-slutpunkt.

Din testing.xml vil se sådan ud:

Test af tværbrowser

Denne testing.xml vil kortlægges med Test sag som ser sådan ud:

Test af tværbrowser

Fordi testing.xml har flere Test-tags ('ChromeTest', 'FirefoxTest', 'EdgeTest'), vil denne testcase udføres én gang for hver browser.

Den første test 'ChromeTest' vil sende værdien af ​​parameteren 'browser' som 'chrome', så ChromeDriver vil blive udført. Denne test vil køre i Chrome-browseren.

Den anden testFirefoxTest' vil videregive værdien af ​​parameteren 'browser' som 'Firefox', så FirefoxDriveren vil blive udført. Denne testcase vil køre på Firefox browser. Tilføjelse af en Edge- eller Safari-test følger samme mønster.

Guru99CrossBrowserScript.java

Komplet 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>

BEMÆRK VENLIGST: For at køre testen skal du højreklikke på testing.xml, vælg Kør som, og klik på TestNG Suite.

 Test af tværbrowser

Skalering med Cloud Browser Grids

Løb Selenium WebDriver dækker lokalt to eller tre browsere, men rigtige brugere tilgår websteder fra hundredvis af operativsystemer og browserkombinationer. Cloud-laboratorier som f.eks. Sauce Labs, BrowserStackog Lambdatest eksponere et fjerntliggende WebDriver-slutpunkt. Peg på det samme Selenium tests på nettet, videregiver de ønskede funktioner for browser, version, operativsystem og opløsning, og pakken skalerer horisontalt uden at administrere lokale drivere.

Moderne gitre viser også AI-assisterede funktioner såsom visuel regressionsdiffrence, selvreparerende elementlokalisering og flakiness-scoring, hvilket reducerer vedligeholdelsesomkostningerne på langvarige Cross Browser Testing-suiter.

Bemærk: Det givne program blev bygget og testet på Selenium 4, Krom, Firefoxog Microsoft EdgeHvis programmerne giver en fejl, skal du opdatere driverens binære filer, så de matcher din installerede browserversion, eller bruge Selenium Manager, der automatisk løser drivere.

Download Selenium Projektfiler til demoen i denne vejledning

Ofte Stillede Spørgsmål

Cross Browser Testing er en funktionel og visuel testteknik, der verificerer, at en webapplikation fungerer på samme måde i Chrome, Firefox, Safari og Microsoft Edge på tværs af desktop og mobil, inklusive forskellige operativsystemer og viewport-størrelser.

Selenium WebDriver leverer en enkelt API, der driver Chrome, Firefox, Edge og Safari via den officielle W3C WebDriver-protokol. Den samme testkode kører mod enhver browser, hvilket gør Selenium WebDriver er de facto standarden for browserautomatisering og testning på tværs af browsere.

TestNG bruger testing.xml-filen med parallel="tests" og trådantal til at starte hvert Test-tag i sin egen tråd. Kombineret med en parameteriseret @BeforeTest-opsætning, det samme Selenium WebDriver-pakken kører på Chrome, Firefoxog Edge samtidigt, hvilket reducerer den samlede udførelsestid.

Sauce Labs, BrowserStack og LambdaTest leverer hostede Selenium Gitre, der eksponerer tusindvis af OS- og browserkombinationer, herunder iOS Safari og Android Chrome. Peg en RemoteWebDriver mod grid-slutpunktet og overfør de ønskede funktioner for at køre den samme kode i stor skala.

AI-drevne visuelle regressionsmotorer, såsom dem der er indbygget i Applitools, Percy og de visuelle moduler i BrowserStack og LambdaTest, sammenligner skærmbilleder semantisk i stedet for pixel for pixel. De ignorerer forventede forskelle i anti-aliasing eller skrifttypegengivelse mellem Chrome, Firefox, Safari og Edge, samtidig med at de stadig fanger ægte layoutregressioner, hvilket kraftigt reducerer falske positiver i pipelines til test på tværs af browsere.

Ja. Moderne frameworks som Healenium, Testim, Mabl og AI-funktionerne i Selenium IDE analyserer DOM'en og foreslår stabile XPath- eller CSS-selektorer. Når en locator ikke fungerer på grund af en ændring i brugergrænsefladen, reparerer AI-genererede selektorer sig selv ved at score elementer i nærheden og vælge det nærmeste match, hvilket holder Cross Browser Testing-suiter grønne med mindre manuel vedligeholdelse.

Almindelige fejl inkluderer uoverensstemmelser i gengivelse af skrifttyper og CSS, JavaUoverensstemmelser i scriptmotorer, defekt HTML5- eller ES-funktionsunderstøttelse, problemer med billedretning, problemer med sidejustering, manglende leverandørpræfikser og OS-specifikke fejl på iOS Safari eller Android Chrome.

Opsummer dette indlæg med: