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 det betyr noe: Ekte brukere รฅpner den samme siden i forskjellige nettlesere, sรฅ oppsett, skript og stiler mรฅ fungere overalt for รฅ beskytte konverteringer og tilgjengelighet.
  • ๐Ÿงช Selenium WebDriver-oppsett: Konfigurer ChromeDriver, GeckoDriver, EdgeDriver og SafariDriver, og velg deretter riktig instans gjennom รฉn parameterisert metode.
  • ๐Ÿ“ฑ TestNG parallelle lรธp: En testing.xml-fil med parallel="tests" starter Chrome, Firefoxog Edge-pakker samtidig, noe som reduserer tilbakemeldingssykluser for store regresjonspakker.
  • โœ… Vanlige feil oppdaget: Skriftstรธrrelsesjustering, CSS-layoutendringer, JavaGap i skriptpolyfyll, HTML5-stรธtte, bildeorientering og avvik mellom operativsystem og nettleser dukker raskt opp.
  • ๐Ÿ› ๏ธ Skylaboratorier og AI: Sauce Labs, BrowserStack og LambdaTest utvider dekningen til tusenvis av OS-nettleserpar, og AI-drevet visuell regresjon og selvreparerende lokaliseringsverktรธy รธker pรฅliteligheten.

Testing pรฅ tvers av nettlesere i Selenium webdriver

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.

Test pรฅ tvers av nettlesere

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

  1. Skriftstรธrrelsen samsvarer ikke i forskjellige nettlesere.
  2. JavaImplementeringene av skriptmotorer varierer pรฅ tvers av Chrome (V8), Firefox (SpiderMonkey), Safari (JavaScriptCore) og Edge.
  3. Forskjeller i CSS- og HTML-validering, inkludert hรฅndtering av leverandรธrprefiks.
  4. Inkonsekvent eller delvis stรธtte for HTML5- og ECMAScript-funksjoner i eldre nettleserversjoner.
  5. Sidejustering, div-stรธrrelse og variasjoner i flexbox- eller grid-gjengivelse.
  6. Forskjeller i bildeorientering og fargeprofil.
  7. 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:

Test pรฅ tvers av nettlesere

Denne testing.xml vil kartlegge med Testsak som ser slik ut:

Test pรฅ tvers av nettlesere

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.

 Test pรฅ tvers av nettlesere

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

Spรธrsmรฅl og svar

Cross Browser Testing er en funksjonell og visuell testteknikk som bekrefter at en webapplikasjon fungerer pรฅ samme mรฅte i Chrome, Firefox, Safari og Microsoft Edge pรฅ tvers av datamaskiner og mobilenheter, inkludert ulike operativsystemer og viewport-stรธrrelser.

Selenium WebDriver tilbyr et enkelt API som driver Chrome, Firefox, Edge og Safari gjennom den offisielle W3C WebDriver-protokollen. Den samme testkoden kjรธrer mot alle nettlesere, noe som gjรธr Selenium WebDriver er de facto-standarden for nettleserautomatisering og testing pรฅ tvers av nettlesere.

TestNG bruker testing.xml-filen med parallel="tests" og thread-count for รฅ starte hver Test-tag i sin egen trรฅd. Kombinert med et parameterisert @BeforeTest-oppsett, det samme Selenium WebDriver-pakken kjรธrer pรฅ Chrome, Firefoxog Edge samtidig, noe som reduserer den totale utfรธrelsestiden.

Sauce Labs, BrowserStack og LambdaTest tilbyr vertsbaserte Selenium Rutenett som eksponerer tusenvis av OS- og nettleserkombinasjoner, inkludert iOS Safari og Android Chrome. Pek en RemoteWebDriver mot rutenettets endepunkt og send รธnskede funksjoner for รฅ kjรธre den samme koden i stor skala.

AI-drevne visuelle regresjonsmotorer, som de som er innebygd i Applitools, Percy og de visuelle modulene i BrowserStack og LambdaTest, sammenligner skjermbilder semantisk i stedet for piksel for piksel. De ignorerer forventede forskjeller i antialiasing eller skriftgjengivelse mellom Chrome, Firefox, Safari og Edge, samtidig som de fanger opp ekte layoutregresjoner, noe som reduserer falske positiver kraftig i pipelines for testing pรฅ tvers av nettlesere.

Ja. Moderne rammeverk som Healenium, Testim, Mabl og AI-funksjonene i Selenium IDE analyserer DOM-en og foreslรฅr stabile XPath- eller CSS-selektorer. Nรฅr en locator bryter sammen pรฅ grunn av en endring i brukergrensesnittet, reparerer AI-genererte selektorer seg selv ved รฅ score elementer i nรฆrheten og velge det nรฆrmeste treffet, noe som holder Cross Browser Testing-suitene grรธnne med mindre manuelt vedlikehold.

Vanlige feil inkluderer uoverensstemmelser i gjengivelse av fonter og CSS, JavaInkonsekvenser i skriptmotorer, รธdelagt stรธtte for HTML5- eller ES-funksjoner, problemer med bilderetning, problemer med sidejustering, manglende leverandรธrprefikser og OS-spesifikke feil pรฅ iOS Safari eller Android Chrome.

Oppsummer dette innlegget med: