Korištenje unakrsnog testiranja preglednika Selenium webdriver

⚡ Pametni sažetak

Korištenje unakrsnog testiranja preglednika Selenium WebDriver provjerava da li se web aplikacija ponaša dosljedno u Chromeu, Firefox, Safari i Edge. Ovaj vodič pokazuje kako kombinirati Selenium WebDriver sa TestNG za pokretanje paralelnih sesija, validaciju renderiranja i skaliranje pokrivenosti u modernim preglednicima za stolna računala i mobilne uređaje.

  • 🌐 Zašto je to važno: Pravi korisnici otvaraju istu stranicu u različitim preglednicima, pa se izgledi, skripte i stilovi moraju svugdje održati kako bi se zaštitile konverzije i pristupačnost.
  • 🧪 Selenium Postavljanje WebDrivera: Konfigurirajte ChromeDriver, GeckoDriver, EdgeDriver i SafariDriver, a zatim odaberite pravu instancu putem jedne parametrizirane metode.
  • 📱 TestNG paralelni hodovi: Datoteka testing.xml s parallel="tests" pokreće Chrome, Firefoxi Edge pakete istovremeno, smanjujući cikluse povratnih informacija za velike regresijske pakete.
  • Uočeni uobičajeni nedostaci: Skaliranje fonta, promjene CSS rasporeda, JavaBrzo se pojavljuju neusklađenosti između skripti s polyfill, podrška za HTML5, orijentacija slike i preglednik.
  • 🛠️ Laboratoriji u oblaku i umjetna inteligencija: Sauce Labs, BrowserStack i LambdaTest proširuju pokrivenost na tisuće parova operativnih sustava i preglednika, a vizualna regresija pokretana umjetnom inteligencijom i lokatori s mogućnošću samoobnavljanja povećavaju pouzdanost.

Testiranje u više preglednika u Selenium webdriver

Zašto nam je potrebno unakrsno testiranje preglednika?

Web-aplikacije se uvelike razlikuju od izvornih desktop aplikacija. Krajnji korisnik može otvoriti web-aplikaciju u bilo kojem pregledniku. Na primjer, neki ljudi radije otvaraju https://twitter.com in Firefox, dok drugi koriste krom, safari, ili Microsoft Edge.

Na donjem dijagramu možete vidjeti da u starijim preglednicima okvir za prijavu na Twitter ne prikazuje zaobljene kutove ispravno, dok moderni Chrome prikazuje kutove kako je zamišljeno.

Ispitivanje pretraživača

Dakle, moramo osigurati da web aplikacija radi kako se očekuje u svim popularnim preglednicima, kako bi joj više ljudi moglo pristupiti i koristiti je.

Ovaj cilj se može ostvariti pomoću Cross Browsera. Ispitivanje proizvoda na svakom pregledniku u dosegu.

Razlozi za probleme s više preglednika

  1. Nepodudarnost veličine fonta u različitim preglednicima.
  2. JavaImplementacije skriptnih mehanizama razlikuju se u Chromeu (V8), Firefox (Pauk-majmun), Safari (JavaScriptCore) i Edge.
  3. Razlike u CSS i HTML validaciji, uključujući rukovanje prefiksom dobavljača.
  4. Nedosljedna ili djelomična podrška za HTML5 i ECMAScript značajke u starijim verzijama preglednika.
  5. Poravnanje stranice, promjena veličine div-a i varijacije renderiranja flexboxa ili mreže.
  6. Razlike u orijentaciji slike i profilu boja.
  7. Nekompatibilnost preglednika s temeljnim operativnim sustavom, uključujući nedostatke mobilnog WebViewa na Android i iOS.

Kako napraviti unakrsno testiranje preglednika

Ako koristimo Selenium WebDriver, možemo automatizirati testne slučajeve za Chrome, Firefox, Microsoft Edgei Safari preglednike.

Za izvršavanje testnih slučajeva s različitim preglednicima na istom računalu istovremeno, možemo integrirati TestNG okvir sa Selenium WebDriver. Za širu pokrivenost operativnih sustava i verzija, isti paket može se usmjeriti na cloud mreže kao što su Sauce Labs, BrowserStack ili LambdaTest putem udaljene krajnje točke WebDrivera.

Vaš testing.xml će izgledati ovako:

Ispitivanje pretraživača

Ovaj testing.xml preslikat će se s Testni slučaj koji izgleda ovako:

Ispitivanje pretraživača

Budući da datoteka testing.xml ima više oznaka Test ('ChromeTest', 'FirefoxTest', 'EdgeTest'), ovaj testni slučaj će se izvršiti jednom za svaki preglednik.

Prvi test 'ChromeTest' će proslijediti vrijednost parametra 'browser' kao 'chrome', pa će se izvršiti ChromeDriver. Ovaj testni slučaj će se pokrenuti u pregledniku Chrome.

Drugi test'FirefoxTest' će proslijediti vrijednost parametra 'browser' kao 'Firefox', dakle FirefoxVozač će se izvršiti. Ovaj testni slučaj će se pokrenuti na Firefox preglednik. Dodavanje Edge ili Safari testa slijedi isti obrazac.

Guru99CrossBrowserScript.java

potpun 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");
	}
}

testiranje.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>

NAPOMENA: Za pokretanje testa kliknite desnom tipkom miša na testiranje.xml, odaberite Pokreni kao i kliknite TestNG Apartman.

 Ispitivanje pretraživača

Skaliranje pomoću mreža preglednika u oblaku

Trčanje Selenium WebDriver lokalno pokriva dva ili tri preglednika, ali stvarni korisnici pristupaju stranicama iz stotina kombinacija operativnih sustava i preglednika. Cloud laboratoriji kao što su Laboratoriji za umake, BrowserStacki Lambda test otkriti udaljenu krajnju točku WebDrivera. Pokažite isto Selenium testovi na mreži, prosljeđuju željene mogućnosti za preglednik, verziju, OS i rezoluciju, a paket se skalira horizontalno bez upravljanja lokalnim upravljačkim programima.

Moderne mreže također ističu značajke potpomognute umjetnom inteligencijom kao što su vizualno regresijsko razlikovanje, lokatori elemenata za samoobnavljanje i bodovanje nestabilnosti, što smanjuje troškove održavanja dugotrajnih paketa za testiranje među preglednicima.

Bilješka: Navedeni program je izgrađen i testiran na Selenium 4, Krom, Firefoxi Microsoft EdgeAko programi daju grešku, ažurirajte binarne datoteke upravljačkog programa kako bi odgovarale instaliranoj verziji vašeg preglednika ili koristite Selenium Upravitelj koji automatski rješava probleme s upravljačkim programima.

Preuzimanje Selenium Projektne datoteke za demo u ovom vodiču

Pitanja i odgovori

Testiranje više preglednika je funkcionalna i vizualna tehnika testiranja koja provjerava radi li web aplikacija na isti način u Chromeu, Firefox, Safari i Microsoft Edge na stolnim računalima i mobilnim uređajima, uključujući različite operativne sustave i veličine prikaza.

Selenium WebDriver pruža jedinstveni API koji pokreće Chrome, Firefox, Edge i Safari putem službenog W3C WebDriver protokola. Isti testni kod radi na bilo kojem pregledniku, što čini Selenium WebDriver je de facto standard za automatizaciju preglednika i testiranje više preglednika.

TestNG koristi datoteku testing.xml s parallel=”tests” i thread-count za pokretanje svake oznake Test u vlastitoj niti. U kombinaciji s parametriziranom postavkom @BeforeTest, isto Selenium WebDriver paket radi na Chromeu, Firefoxi Edge istovremeno, smanjujući ukupno vrijeme izvršavanja.

Sauce Labs, BrowserStack i LambdaTest pružaju hostane Selenium Mreže koje otkrivaju tisuće kombinacija operativnih sustava i preglednika, uključujući iOS, Safari i Android Chrome. Usmjerite RemoteWebDriver na krajnju točku mreže i proslijedite željene mogućnosti za pokretanje istog koda u većem opsegu.

Vizualni regresijski mehanizmi pokretani umjetnom inteligencijom, poput onih ugrađenih u Applitools, Percy i vizualne module BrowserStacka i LambdaTesta, uspoređuju snimke zaslona semantički umjesto piksel po piksel. Ignoriraju očekivane razlike u anti-aliasingu ili renderiranju fontova između Chromea, Firefox, Safari i Edge, a istovremeno hvata stvarne regresije izgleda, što značajno smanjuje lažno pozitivne rezultate u procesima testiranja među preglednicima.

Da. Moderni okviri poput Healeniuma, Testim, Mabl i značajke umjetne inteligencije u Selenium IDE analizira DOM i predlaže stabilne XPath ili CSS selektore. Kada lokator prestane raditi zbog promjene korisničkog sučelja, selektori generirani umjetnom inteligencijom sami se obnavljaju bodovanjem obližnjih elemenata i odabirom najbližeg podudaranja, što održava pakete za testiranje među preglednicima zelenima uz manje ručnog održavanja.

Uobičajeni nedostaci uključuju neusklađenosti u prikazivanju fontova i CSS-a, JavaNedosljednosti skriptnog mehanizma, neispravna podrška za HTML5 ili ES značajke, problemi s orijentacijom slika, problemi s poravnanjem stranica, nedostajući prefiksi dobavljača i pogreške specifične za operativni sustav na iOS Safariju ili Android Chrome.

Sažmite ovu objavu uz: