Cross Browser Testing med Selenium webbdrivrutin

⚡ Smart sammanfattning

Cross Browser Testing med Selenium WebDriver verifierar att en webbapplikation beter sig konsekvent i Chrome, Firefox, Safari och Edge. Den här handledningen visar hur man kombinerar Selenium WebDriver med TestNG för att starta parallella sessioner, validera rendering och skala täckning över moderna webbläsare för stationära och mobila enheter.

  • 🌐 Varför är det viktigt Riktiga användare öppnar samma sida i olika webbläsare, så layouter, skript och stilar måste fungera överallt för att skydda konverteringar och tillgänglighet.
  • 🧪 Selenium WebDriver-inställningar: Konfigurera ChromeDriver, GeckoDriver, EdgeDriver och SafariDriver och välj sedan rätt instans med en enda parametriserad metod.
  • 📱 TestNG parallella löpningar: En testing.xml-fil med parallel="tests" startar Chrome, Firefoxoch Edge-sviterna samtidigt, vilket minskar feedbackcyklerna för stora regressionspaket.
  • ✅ Vanliga upptäckta defekter: Teckensnittsskalning, CSS-layoutförändringar, JavaMellanrum i skript för polyfyllning, HTML5-stöd, bildorientering och avvikelser mellan operativsystem och webbläsare dyker snabbt upp.
  • 🛠️ Molnlabb och AI: Sauce Labs, BrowserStack och LambdaTest utökar täckningen till tusentals OS-webbläsarpar, och AI-driven visuell regression och självläkande lokaliseringsverktyg ökar tillförlitligheten.

Testning i flera webbläsare i Selenium webbdrivrutin

Varför behöver vi testa över webbläsare?

Webbaserade applikationer skiljer sig mycket från inbyggda skrivbordsapplikationer. En webbapplikation kan öppnas i vilken webbläsare som helst av slutanvändaren. Till exempel föredrar vissa att öppna https://twitter.com in Firefox, medan andra använder krom, Safari, eller Microsoft Edge.

I diagrammet nedan kan du se att i äldre webbläsare renderar inte inloggningsrutan på Twitter rundade hörn korrekt, medan moderna Chrome renderar hörnen som de ska.

Testning mellan webbläsare

Så vi måste se till att webbapplikationen fungerar som förväntat i alla populära webbläsare, så att fler kan komma åt den och använda den.

Detta mål kan uppfyllas med Cross Browser Testning av produkten på alla webbläsare som omfattas.

Orsaker till problem med flera webbläsare

  1. Teckenstorleken matchar inte i olika webbläsare.
  2. JavaImplementeringar av skriptmotorer skiljer sig åt mellan Chrome (V8), Firefox (SpiderMonkey), Safari (JavaScriptCore) och Edge.
  3. Skillnader i CSS- och HTML-validering, inklusive hantering av leverantörsprefix.
  4. Inkonsekvent eller ofullständigt stöd för HTML5- och ECMAScript-funktioner i äldre webbläsarversioner.
  5. Sidjustering, div-storlek och variationer i flexbox- eller rutnätsrendering.
  6. Bildorientering och skillnader i färgprofil.
  7. Webbläsarens inkompatibilitet med det underliggande operativsystemet, inklusive egenheter i mobil WebView Android och iOS.

Hur man gör crossbrowser-testning

Om vi ​​använder Selenium WebDriver, vi kan automatisera testfall mot Chrome, Firefox, Microsoft Edgeoch Safari-webbläsare.

För att köra testfall med olika webbläsare på samma maskin samtidigt kan vi integrera TestNG ram med Selenium WebDriver. För bredare OS- och versionstäckning kan samma svit pekas mot molnnätverk som Sauce Labs, BrowserStack eller LambdaTest via en fjärransluten WebDriver-slutpunkt.

Din testing.xml kommer att se ut så här:

Testning mellan webbläsare

Denna testing.xml kommer att mappas med Testfall vilket ser ut så här:

Testning mellan webbläsare

Eftersom testing.xml har flera testtaggar ('ChromeTest', 'FirefoxTest', 'EdgeTest'), kommer detta testfall att köras en gång för varje webbläsare.

Det första testet 'ChromeTest' skickar värdet för parametern 'browser' som 'chrome', så ChromeDriver kommer att köras. Detta testfall kommer att köras i webbläsaren Chrome.

Det andra testetFirefoxTest' kommer att skicka värdet för parametern 'webbläsare' som 'Firefox', så FirefoxDrivrutinen kommer att köras. Detta testfall kommer att köras på Firefox webbläsare. Att lägga till ett Edge- eller Safari-test följer samma mönster.

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>

OBS: För att köra testet, högerklicka på testing.xml, välj Kör som och klicka på TestNG Svit Room.

 Testning mellan webbläsare

Skalning med Cloud Browser Grids

Springa Selenium WebDriver täcker lokalt två eller tre webbläsare, men riktiga användare kommer åt webbplatser från hundratals olika operativsystem och webbläsarkombinationer. Molnlabb som Sauslabb, BrowserStackoch Lambdatest exponera en fjärransluten WebDriver-slutpunkt. Peka samma Selenium tester vid nätet, skickar önskade funktioner för webbläsaren, versionen, operativsystemet och upplösningen, och sviten skalar horisontellt utan att hantera lokala drivrutiner.

Moderna rutnät visar även AI-assisterade funktioner som visuell regressionsdifferens, självläkande elementlokalisering och flakighetspoängsättning, vilket minskar underhållskostnaderna för långlivade Cross Browser Testing-sviter.

Obs: Det givna programmet byggdes och testades på Selenium 4, Krom, Firefoxoch Microsoft EdgeOm programmen ger ett felmeddelande, uppdatera drivrutinsbinärfilerna så att de matchar din installerade webbläsarversion, eller använd Selenium Manager som löser drivrutiner automatiskt.

ladda ner Selenium Projektfiler för demon i denna handledning

Vanliga frågor

Cross Browser Testing är en funktionell och visuell testteknik som verifierar att en webbapplikation fungerar på samma sätt i Chrome, Firefox, Safari och Microsoft Edge på datorer och mobila enheter, inklusive olika operativsystem och visningsstorlekar.

Selenium WebDriver tillhandahåller ett enda API som driver Chrome, Firefox, Edge och Safari via det officiella W3C WebDriver-protokollet. Samma testkod körs mot vilken webbläsare som helst, vilket gör Selenium WebDriver är de facto standarden för webbläsarautomation och testning mellan webbläsare.

TestNG använder testing.xml-filen med parallel="tests" och thread-count för att starta varje Test-tagg i sin egen tråd. Kombinerat med en parametriserad @BeforeTest-inställning, samma Selenium WebDriver-sviten körs på Chrome, Firefoxoch Edge samtidigt, vilket minskar den totala exekveringstiden.

Sauce Labs, BrowserStack och LambdaTest tillhandahåller hostade Selenium Rutnät som exponerar tusentals OS- och webbläsarkombinationer, inklusive iOS Safari och Android Chrome. Peka en RemoteWebDriver mot rutnätets slutpunkt och skicka önskade funktioner för att köra samma kod i stor skala.

AI-drivna visuella regressionsmotorer, som de som är inbyggda i Applitools, Percy och de visuella modulerna i BrowserStack och LambdaTest, jämför skärmdumpar semantiskt istället för pixel för pixel. De ignorerar förväntade skillnader i antialiasing eller teckensnittsrendering mellan Chrome, Firefox, Safari och Edge samtidigt som de fortfarande fångar upp genuina layoutregressioner, vilket kraftigt minskar falska positiva resultat i pipelines för webbläsaröverskridande tester.

Ja. Moderna ramverk som Healenium, Testim, Mabl och AI-funktionerna i Selenium IDE analyserar DOM och föreslår stabila XPath- eller CSS-selektorer. När en locator går sönder på grund av en UI-ändring, läker AI-genererade selektorer sig själva genom att poängsätta närliggande element och välja den närmaste matchningen, vilket håller Cross Browser Testing-sviterna gröna med mindre manuellt underhåll.

Vanliga fel inkluderar felaktig rendering av teckensnitt och CSS, JavaInkonsekvenser i skriptmotorer, trasigt stöd för HTML5- eller ES-funktioner, problem med bildorientering, problem med sidjustering, saknade leverantörsprefix och operativsystemspecifika fel på iOS Safari eller Android Chrome.

Sammanfatta detta inlägg med: