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: