Böngészők közötti tesztelés segítségével Selenium webdriver

⚡ Okos összefoglaló

Böngészők közötti tesztelés segítségével Selenium A WebDriver ellenőrzi, hogy egy webalkalmazás konzisztensen viselkedik-e Chrome-on, Firefox, Safari és Edge böngészőkben. Ez az oktatóanyag bemutatja, hogyan lehet kombinálni Selenium WebDriver with TestNG párhuzamos munkamenetek indításához, a renderelés validálásához és a lefedettség skálázásához modern asztali és mobilböngészőkben.

  • 🌐 Miért számít: A valódi felhasználók ugyanazt az oldalt nyitják meg különböző böngészőkben, ezért az elrendezéseknek, szkripteknek és stílusoknak mindenhol helytállónak kell lenniük a konverziók és az akadálymentesítés védelme érdekében.
  • 🧪 Selenium WebDriver beállítása: Konfiguráld a ChromeDriver, GeckoDriver, EdgeDriver és SafariDriver modulokat, majd válaszd ki a megfelelő példányt egyetlen paraméteres metódussal.
  • 📱 TestNG párhuzamos futtatások: Egy parallel="tests" beállítással rendelkező testing.xml fájl elindítja a Chrome-ot, Firefox, és az Edge csomagokat egyszerre, csökkentve a visszacsatolási ciklusokat a nagyméretű regressziós csomagok esetében.
  • Gyakori hibák, amiket észleltek: Betűméretezés, CSS elrendezésváltások, JavaA szkriptek polyfill réseivel, a HTML5-támogatással, a kép tájolásával és az operációs rendszer és a böngésző közötti eltérésekkel kapcsolatos problémák gyorsan felszínre kerülnek.
  • 🇧🇷 Felhőlaboratóriumok és mesterséges intelligencia: A Sauce Labs, a BrowserStack és a LambdaTest több ezer operációs rendszer-böngésző párra bővíti a lefedettséget, a mesterséges intelligencia által vezérelt vizuális regresszió és önjavító lokátorok pedig növelik a megbízhatóságot.

Böngészők közötti tesztelés Selenium webdriver

Miért van szükségünk a böngészők közötti tesztelésre?

A webalapú alkalmazások nagyon különböznek a natív asztali alkalmazásoktól. A webalkalmazásokat a végfelhasználó bármilyen böngészőben megnyithatja. Például egyesek szívesebben nyitják meg https://twitter.com in Firefox, míg mások használják króm, Safarivagy Microsoft Edge.

Az alábbi ábrán látható, hogy a régebbi böngészőkben a Twitter bejelentkezési ablaka nem jeleníti meg helyesen a lekerekített sarkokat, míg a modern Chrome a tervek szerint jeleníti meg a sarkokat.

Kereszt böngésző tesztelése

Tehát biztosítanunk kell, hogy a webes alkalmazás a várt módon működjön minden népszerű böngészőben, hogy többen is hozzáférhessenek és használhassák.

Ez a cél a Cross Browser segítségével érhető el. Tesztelés a termék minden böngészőjében a hatókörben.

A böngészők közötti problémák okai

  1. Nem egyezik a betűméret a különböző böngészőkben.
  2. JavaA szkriptmotorok megvalósítása eltérő a Chrome-ban (V8), Firefox (Pókmajom), Szafari (JavaScriptCore) és Edge.
  3. CSS és HTML validációs különbségek, beleértve a szállítói előtagok kezelését.
  4. A HTML5 és az ECMAScript funkciók inkonzisztens vagy részleges támogatása régebbi böngészőverziókban.
  5. Oldal igazítása, div méretezése, valamint flexbox vagy grid megjelenítési variációk.
  6. Kép orientációja és színprofil-különbségek.
  7. Böngésző inkompatibilitása az alapul szolgáló operációs rendszerrel, beleértve a mobil WebView sajátosságait is Android és iOS.

Böngészők közötti tesztelés

Ha használunk Selenium A WebDriverrel automatizálhatjuk a Chrome elleni teszteseteket, Firefox, Microsoft Edgeés a Safari böngészők.

Ahhoz, hogy teszteseteket futtathassunk ugyanazon a gépen, egyszerre különböző böngészőkkel, integrálhatjuk a TestNG kerettel Selenium WebDriver. Szélesebb körű operációs rendszerek és verziók lefedettsége érdekében ugyanaz a csomag felhőalapú hálózatokra, például a Sauce Labsre, a BrowserStackre vagy a LambdaTestre is irányítható egy távoli WebDriver végponton keresztül.

A testing.xml fájlod így fog kinézni:

Kereszt böngésző tesztelése

Ez a testing.xml a következővel lesz leképezve Teszt eset ami így néz ki:

Kereszt böngésző tesztelése

Mivel a testing.xml fájl több Test címkét tartalmaz ('ChromeTest', 'Firefox„Test”, „EdgeTest”), ez a teszteset minden böngészőnél egyszer lefut.

Az első teszt, a „ChromeTest”, a „browser” paraméter értékét „chrome”-ként adja át, így a ChromeDriver végrehajtásra kerül. Ez a teszteset a Chrome böngészőn fog futni.

A második teszt'FirefoxA teszt" átadja a "böngésző" paraméter értékét, mint "Firefox', szóval FirefoxA meghajtóprogram végrehajtásra kerül. Ez a teszteset a következőn fog futni: Firefox böngésző. Egy Edge vagy Safari teszt hozzáadása ugyanazt a mintát követi.

Guru99CrossBrowserScript.java

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

tesztelés.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>

JEGYZET: A teszt futtatásához kattintson jobb gombbal a tesztelés.xml, válassza a Futtatás másként lehetőséget, és kattintson a TestNG Lakosztály.

 Kereszt böngésző tesztelése

Méretezés felhőalapú böngészőrácsokkal

futás Selenium A WebDriver lokálisan két vagy három böngészőt fed le, de a valódi felhasználók több száz operációs rendszer és böngésző kombinációjából férnek hozzá az oldalakhoz. Felhőlaboratóriumok, mint például Sauce Labs, BrowserStackés LambdaTeszt tegyen elérhetővé egy távoli WebDriver végpontot. Ugyanarra a pontra kell irányítani Selenium teszteket végez a grid-en, átadja a böngésző, verzió, operációs rendszer és felbontás kívánt képességeit, és a csomag horizontálisan skálázódik helyi illesztőprogramok kezelése nélkül.

A modern gridek olyan mesterséges intelligencia által támogatott funkciókat is tartalmaznak, mint a vizuális regressziós differenciálás, az önjavító elemkeresők és az egyenetlenségi pontozás, amelyek csökkentik a karbantartási költségeket a hosszú élettartamú böngészőközi tesztelési csomagokon.

Jegyzet: A megadott programot a következőn építették fel és tesztelték: Selenium 4, Króm, Firefoxés Microsoft EdgeHa a programok hibát jeleznek, kérjük, frissítse az illesztőprogram binárisait, hogy megfeleljenek a telepített böngésző verziójának, vagy használja a következőt: Selenium Kezelő, amely automatikusan megoldja az illesztőprogramokat.

Töltse le a Selenium Projektfájlok a bemutatóhoz ebben az oktatóanyagban

GYIK

A böngészők közötti tesztelés egy funkcionális és vizuális tesztelési technika, amely ellenőrzi, hogy egy webes alkalmazás ugyanúgy működik-e Chrome-on. Firefox, Safari és Microsoft Edge asztali számítógépen és mobilon egyaránt, beleértve a különböző operációs rendszereket és nézetablak-méreteket.

Selenium A WebDriver egyetlen API-t biztosít, amely a Chrome-ot hajtja, Firefox, Edge és Safari böngészőkben a hivatalos W3C WebDriver protokollon keresztül. Ugyanez a tesztkód fut bármely böngészőn, ami Selenium A WebDriver a böngészőautomatizálás és a böngészők közötti tesztelés tényleges szabványa.

TestNG a testing.xml fájlt használja a parallel=”tests” és a thread-count paraméterekkel, hogy minden Test taget a saját szálában indítson. Egy paraméterezett @BeforeTest beállítással kombinálva ugyanez a Selenium A WebDriver csomag Chrome-on fut, Firefox, és az Edge-et egyidejűleg, csökkentve az általános végrehajtási időt.

A Sauce Labs, a BrowserStack és a LambdaTest hosztolt szolgáltatást nyújt Selenium Rácsok, amelyek több ezer operációs rendszer és böngésző kombinációt tesznek elérhetővé, beleértve az iOS Safarit és Android Chrome. Irányítson egy RemoteWebDriver-t a rács végpontjára, és adja át a kívánt képességeket ugyanazon kód nagy léptékű futtatásához.

Az olyan mesterséges intelligenciával működő vizuális regressziós motorok, mint az Applitools, a Percy, valamint a BrowserStack és a LambdaTest vizuális moduljai, szemantikailag hasonlítják össze a képernyőképeket, nem pedig pixelenként. Figyelmen kívül hagyják a Chrome, a böngészők és a böngészők közötti várható élsimítási vagy betűtípus-megjelenítési különbségeket. Firefox, a Safari és az Edge böngészőkben, miközben továbbra is észleli a valódi elrendezési regressziókat, ami jelentősen csökkenti a téves riasztások számát a böngészőközi tesztelés során.

Igen. Modern keretrendszerek, mint például a Healenium, Testim, a Mabl és a mesterséges intelligencia funkciói Selenium Az IDE elemzi a DOM-ot, és stabil XPath vagy CSS szelektorokat javasol. Amikor egy lokátor a felhasználói felület változása miatt meghibásodik, a mesterséges intelligencia által generált szelektorok öngyógyító módon pontozzák a közeli elemeket, és kiválasztják a legközelebbi egyezést, ami kevesebb manuális karbantartással biztosítja a böngészők közötti tesztelést (Cross Browser Testing).

Gyakori hibák közé tartoznak a betűtípus- és CSS-megjelenítési eltérések, JavaSzkriptmotor-inkonzisztenciák, hibás HTML5 vagy ES funkciótámogatás, képtájolási problémák, oldaligazítási problémák, hiányzó gyártói előtagok és operációs rendszer-specifikus hibák iOS Safari vagy Android Chrome.

Foglald össze ezt a bejegyzést a következőképpen: