Cross Browser Testing pomocí Selenium webový ovladač

⚡ Chytré shrnutí

Cross Browser Testing pomocí Selenium WebDriver ověřuje, zda se webová aplikace v Chromu chová konzistentně. Firefox, Safari a Edge. Tento tutoriál ukazuje, jak je zkombinovat Selenium WebDriver s TestNG spouštět paralelní relace, ověřovat vykreslování a škálovat pokrytí napříč moderními prohlížeči pro stolní počítače a mobilní zařízení.

  • 🌐 Proč je to důležité: Skuteční uživatelé otevírají stejnou stránku v různých prohlížečích, takže rozvržení, skripty a styly musí být všude stejné, aby se ochránily konverze a přístupnost.
  • 🧪 Selenium Nastavení WebDriveru: Nakonfigurujte ChromeDriver, GeckoDriver, EdgeDriver a SafariDriver a poté vyberte správnou instanci pomocí jediné parametrizované metody.
  • 📱 TestNG paralelní běhy: Soubor testing.xml s parallel="tests" spustí Chrome, Firefoxa Edge Suites současně, což zkracuje cykly zpětné vazby u velkých regresních balíčků.
  • (Tj. Časté zjištěné vady: Škálování písma, posuny rozvržení CSS, JavaMezery ve skriptech s polyfilly, podpora HTML5, orientace obrázků a neshody mezi operačním systémem a prohlížečem se rychle objevují.
  • 🛠️ Cloudové laboratoře a umělá inteligence: Sauce Labs, BrowserStack a LambdaTest rozšiřují pokrytí na tisíce párů operační systém-prohlížeč a vizuální regrese řízená umělou inteligencí a samoopravné lokátory zvyšují spolehlivost.

Multiprohlížečové testování v Selenium webový ovladač

Proč potřebujeme testování napříč prohlížeči?

Webové aplikace se velmi liší od nativních desktopových aplikací. Webovou aplikaci může koncový uživatel otevřít v libovolném prohlížeči. Například někteří lidé dávají přednost otevírání https://twitter.com in Firefox, zatímco ostatní používají chróm, Safarinebo Microsoft Edge.

Na níže uvedeném diagramu si můžete všimnout, že ve starších prohlížečích se přihlašovací pole Twitteru zaoblené rohy nezobrazují správně, zatímco moderní Chrome rohy vykresluje tak, jak byly navrženy.

Testování přes prohlížeč

Takže musíme zajistit, aby webová aplikace fungovala podle očekávání ve všech populárních prohlížečích, aby k ní mělo přístup a mohlo ji používat více lidí.

Tohoto cíle lze dosáhnout pomocí Cross Browser. Testování produktu ve všech prohlížečích v rozsahu.

Důvody problémů napříč prohlížeči

  1. Nesoulad velikosti písma v různých prohlížečích.
  2. JavaImplementace skriptovacích enginů se v Chrome (V8) liší. Firefox (Pavoučí opice), Safari (JavaScriptCore) a Edge.
  3. Rozdíly v ověřování CSS a HTML, včetně zpracování prefixů dodavatelů.
  4. Nekonzistentní nebo částečná podpora funkcí HTML5 a ECMAScript ve starších verzích prohlížečů.
  5. Zarovnání stránky, změna velikosti divů a varianty vykreslování flexboxů nebo mřížky.
  6. Rozdíly v orientaci obrazu a barevném profilu.
  7. Nekompatibilita prohlížeče se základním operačním systémem, včetně zvláštností mobilního WebView. Android a iOS.

Jak provést křížové testování prohlížeče

Pokud používáme Selenium WebDriver, můžeme automatizovat testovací případy v Chromu, Firefox, Microsoft Edgea prohlížeče Safari.

Pro spuštění testovacích případů s různými prohlížeči na stejném počítači současně můžeme integrovat TestNG rámec s Selenium WebDriver. Pro širší pokrytí operačních systémů a verzí lze stejnou sadu nasměrovat na cloudové gridy, jako jsou Sauce Labs, BrowserStack nebo LambdaTest, prostřednictvím vzdáleného koncového bodu WebDriver.

Váš soubor testing.xml bude vypadat takto:

Testování přes prohlížeč

Tento soubor testing.xml se namapuje na soubor Testovací případ který vypadá takto:

Testování přes prohlížeč

Protože soubor testing.xml obsahuje více tagů Test („ChromeTest“, „FirefoxTest', 'EdgeTest'), tento testovací případ se spustí jednou pro každý prohlížeč.

První test 'ChromeTest' předá hodnotu parametru 'browser' jako 'chrome', takže bude spuštěn ChromeDriver. Tento testovací případ poběží v prohlížeči Chrome.

Druhý testFirefoxTest' předá hodnotu parametru 'browser' jako 'Firefox', takže FirefoxOvladač bude spuštěn. Tento testovací případ bude spuštěn na Firefox prohlížeč. Přidání testu Edge nebo Safari se řídí stejným vzorem.

Guru99CrossBrowserScript.java

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

testování.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>

POZNÁMKA: Chcete-li spustit test, klikněte pravým tlačítkem myši na testování.xml, vyberte Spustit jako a klikněte na TestNG Suite.

 Testování přes prohlížeč

Škálování pomocí cloudových prohlížečových mřížek

Běh Selenium WebDriver lokálně pokrývá dva nebo tři prohlížeče, ale skuteční uživatelé přistupují k webům ze stovek kombinací operačních systémů a prohlížečů. Cloudové laboratoře, jako například Sauce Labs, BrowserStack, a Lambda test zpřístupnit vzdálený koncový bod WebDriveru. Ukažte na stejný bod Selenium testy v mřížce, předá požadované funkce pro prohlížeč, verzi, operační systém a rozlišení a sada se škáluje horizontálně bez správy lokálních ovladačů.

Moderní gridy také zobrazují funkce s podporou umělé inteligence, jako je vizuální regresní diferenciace, samoopravitelné lokátory prvků a bodování nestálosti, což snižuje režijní náklady na údržbu dlouhodobých sad pro Cross Browser Testing.

Poznámka: Daný program byl sestaven a otestován na Selenium 4, Chrom, Firefox, a Microsoft EdgePokud programy hlásí chybu, aktualizujte binární soubory ovladače tak, aby odpovídaly verzi vašeho nainstalovaného prohlížeče, nebo použijte Selenium Správce, který automaticky řeší problémy s ovladači.

stáhněte Selenium Soubory projektu pro ukázku v tomto kurzu

Nejčastější dotazy

Cross Browser Testing je funkční a vizuální testovací technika, která ověřuje, zda webová aplikace funguje stejně v prohlížeči Chrome, Firefox, Safari a Microsoft Edge na stolních počítačích i mobilních zařízeních, včetně různých operačních systémů a velikostí zobrazovaných oblastí.

Selenium WebDriver poskytuje jedno API, které řídí Chrome, Firefox, Edge a Safari prostřednictvím oficiálního protokolu W3C WebDriver. Stejný testovací kód běží v jakémkoli prohlížeči, což umožňuje Selenium WebDriver je de facto standardem pro automatizaci prohlížečů a cross-browser testování.

TestNG používá soubor testing.xml s parallel="tests" a thread-count ke spuštění každého tagu Test ve vlastním vlákně. V kombinaci s parametrizovaným nastavením @BeforeTest je totéž... Selenium Sada WebDriver běží v Chromu, Firefoxa Edge současně, což zkracuje celkovou dobu provádění.

Hostované služby poskytují Sauce Labs, BrowserStack a LambdaTest. Selenium Mřížky, které zobrazují tisíce kombinací operačních systémů a prohlížečů, včetně iOS, Safari a Android Chrome. Namiřte RemoteWebDriver na koncový bod mřížky a předejte požadované funkce pro spuštění stejného kódu ve velkém měřítku.

Vizuální regresní enginy poháněné umělou inteligencí, jako jsou ty zabudované v Applitools, Percy a vizuálních modulech BrowserStack a LambdaTest, porovnávají snímky obrazovky sémanticky, nikoli pixel po pixelu. Ignorují očekávané rozdíly v anti-aliasingu nebo vykreslování písma mezi Chromem, Firefox, Safari a Edge a zároveň zachycuje skutečné regrese rozvržení, což výrazně snižuje falešně pozitivní výsledky v pipelinech Cross Browser Testing.

Ano. Moderní frameworky jako Healenium, Testim, Mabl a funkce umělé inteligence v Selenium IDE analyzuje DOM a navrhuje stabilní selektory XPath nebo CSS. Když lokátor porouchá kvůli změně uživatelského rozhraní, selektory generované umělou inteligencí se samy opraví tak, že vyhodnotí blízké prvky a vyberou nejbližší shodu, což udržuje sady Cross Browser Testing v dobrém stavu s menší manuální údržbou.

Mezi běžné vady patří neshody ve vykreslování fontů a CSS, JavaNekonzistence skriptovacího enginu, nefunkční podpora funkcí HTML5 nebo ES, problémy s orientací obrázků, problémy se zarovnáním stránek, chybějící prefixy dodavatelů a chyby specifické pro operační systém v prohlížečích iOS Safari nebo Android Chrome.

Shrňte tento příspěvek takto: