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 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.
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
- Teckenstorleken matchar inte i olika webblรคsare.
- JavaImplementeringar av skriptmotorer skiljer sig รฅt mellan Chrome (V8), Firefox (SpiderMonkey), Safari (JavaScriptCore) och Edge.
- Skillnader i CSS- och HTML-validering, inklusive hantering av leverantรถrsprefix.
- Inkonsekvent eller ofullstรคndigt stรถd fรถr HTML5- och ECMAScript-funktioner i รคldre webblรคsarversioner.
- Sidjustering, div-storlek och variationer i flexbox- eller rutnรคtsrendering.
- Bildorientering och skillnader i fรคrgprofil.
- 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:
Denna testing.xml kommer att mappas med Testfall vilket ser ut sรฅ hรคr:
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.
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




