Cross Browser Testing ved hjelp av Selenium webdriver
โก Smart oppsummering
Cross Browser Testing ved hjelp av Selenium WebDriver bekrefter at et nettprogram oppfรธrer seg konsekvent pรฅ Chrome, Firefox, Safari og Edge. Denne veiledningen demonstrerer hvordan du kombinerer Selenium WebDriver med TestNG for รฅ starte parallelle รธkter, validere gjengivelse og skalere dekning pรฅ tvers av moderne nettlesere pรฅ datamaskiner og mobilenheter.

Hvorfor trenger vi testing pรฅ tvers av nettlesere?
Nettbaserte applikasjoner er svรฆrt forskjellige fra native skrivebordsapplikasjoner. En nettapplikasjon kan รฅpnes i hvilken som helst nettleser av sluttbrukeren. Noen foretrekker for eksempel รฅ รฅpne https://twitter.com in Firefox, mens andre bruker Chrome, Safarieller Microsoft Edge.
I diagrammet nedenfor kan du se at i eldre nettlesere gjengir ikke innloggingsboksen til Twitter avrundede hjรธrner riktig, mens moderne Chrome gjengir hjรธrnene som utformet.
Sรฅ vi mรฅ sรธrge for at nettapplikasjonen fungerer som forventet i alle populรฆre nettlesere, slik at flere kan fรฅ tilgang til den og bruke den.
Dette mรฅlet kan oppfylles med Cross Browser Testing av produktet pรฅ alle nettlesere som er omfattet.
ร rsaker til problemer pรฅ tvers av nettlesere
- Skriftstรธrrelsen samsvarer ikke i forskjellige nettlesere.
- JavaImplementeringene av skriptmotorer varierer pรฅ tvers av Chrome (V8), Firefox (SpiderMonkey), Safari (JavaScriptCore) og Edge.
- Forskjeller i CSS- og HTML-validering, inkludert hรฅndtering av leverandรธrprefiks.
- Inkonsekvent eller delvis stรธtte for HTML5- og ECMAScript-funksjoner i eldre nettleserversjoner.
- Sidejustering, div-stรธrrelse og variasjoner i flexbox- eller grid-gjengivelse.
- Forskjeller i bildeorientering og fargeprofil.
- Nettleserens inkompatibilitet med det underliggende operativsystemet, inkludert sรฆregenheter ved mobil WebView Android og iOS.
Slik gjรธr du testing pรฅ tvers av nettlesere
Hvis vi bruker Selenium WebDriver, vi kan automatisere testtilfeller mot Chrome, Firefox, Microsoft Edgeog Safari-nettlesere.
For รฅ kjรธre testtilfeller med forskjellige nettlesere pรฅ samme maskin samtidig, kan vi integrere TestNG rammeverk med Selenium WebDriver. For bredere OS- og versjonsdekning kan den samme suiten pekes mot skynett som Sauce Labs, BrowserStack eller LambdaTest gjennom et eksternt WebDriver-endepunkt.
testing.xml-filen din vil se slik ut:
Denne testing.xml vil kartlegge med Testsak som ser slik ut:
Fordi testing.xml-filen har flere testkoder ('ChromeTest', 'FirefoxTest', 'EdgeTest'), vil denne testtilfellet kjรธres รฉn gang for hver nettleser.
Den fรธrste testen ยซChromeTestยป vil sende verdien av parameteren ยซbrowserยป som ยซchromeยป, slik at ChromeDriver vil bli kjรธrt. Denne testtilfellet vil kjรธre pรฅ Chrome-nettleseren.
Den andre testenFirefoxTest' vil sende verdien av parameteren 'nettleser' som 'Firefox', sรฅ FirefoxDriveren vil bli kjรธrt. Denne testtilfellet vil kjรธre pรฅ Firefox nettleser. ร legge til en Edge- eller Safari-test fรธlger samme 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>
NOTAT: For รฅ kjรธre testen, hรธyreklikk pรฅ testing.xml, velg Kjรธr som, og klikk pรฅ TestNG Etter.
Skalering med nettlesernett i skyen
kjรธrer Selenium WebDriver dekker lokalt to eller tre nettlesere, men ekte brukere fรฅr tilgang til nettsteder fra hundrevis av operativsystemer og nettleserkombinasjoner. Skylaboratorier som Saus Labs, BrowserStackog Lambda test eksponere et eksternt WebDriver-endepunkt. Pek det samme Selenium tester pรฅ nettet, sender รธnskede funksjoner for nettleser, versjon, operativsystem og opplรธsning, og pakken skalerer horisontalt uten รฅ administrere lokale drivere.
Moderne rutenett viser ogsรฅ AI-assisterte funksjoner som visuell regresjonsdiffering, selvreparerende elementlokalisering og flakhetsscoring, noe som reduserer vedlikeholdskostnader pรฅ langvarige Cross Browser Testing-suiter.
OBS: Det gitte programmet ble bygget og testet pรฅ Selenium 4, Krom, Firefoxog Microsoft EdgeHvis programmene gir en feilmelding, mรฅ du oppdatere driverbinรฆrfilene slik at de samsvarer med nettleserversjonen som er installert, eller bruke Selenium Manager som lรธser drivere automatisk.
Last ned Selenium Prosjektfiler for demoen i denne opplรฆringen




