Cross Browser Testing folosind Selenium webdriver

⚡ Rezumat inteligent

Cross Browser Testing folosind Selenium WebDriver verifică dacă o aplicație web se comportă consecvent în Chrome, Firefox, Safari și Edge. Acest tutorial demonstrează cum să combinați Selenium WebDriver cu TestNG pentru a lansa sesiuni paralele, a valida randarea și a scala acoperirea pe browserele moderne pentru desktopuri și dispozitive mobile.

  • 🌐 De ce conteaza: Utilizatorii reali deschid aceeași pagină în browsere diferite, așadar machetele, scripturile și stilurile trebuie să fie valabile peste tot pentru a proteja conversiile și accesibilitatea.
  • 🧪 Selenium Configurarea driverului Web: Configurați ChromeDriver, GeckoDriver, EdgeDriver și SafariDriver, apoi alegeți instanța potrivită printr-o singură metodă parametrizată.
  • ???? TestNG alergări paralele: Un fișier testing.xml cu parametrul parallel=”tests” declanșează Chrome, Firefoxși suite Edge în același timp, reducând ciclurile de feedback pentru pachetele mari de regresie.
  • ✅ Defecte comune observate: Scalarea fonturilor, schimbările de layout CSS, JavaLacunele în polyfill-urile din scripturi, compatibilitatea cu HTML5, orientarea imaginii și neconcordanțele dintre sistemul de operare și browser apar rapid.
  • 🛠️ Laboratoare cloud și inteligență artificială: Sauce Labs, BrowserStack și LambdaTest extind acoperirea la mii de perechi sistem de operare-browser, iar regresia vizuală bazată pe inteligență artificială și localizatorii cu auto-reparare sporesc fiabilitatea.

Testarea cross-browser în Selenium webdriver

De ce avem nevoie de testare între browsere?

Aplicațiile web sunt foarte diferite de aplicațiile desktop native. O aplicație web poate fi deschisă în orice browser de către utilizatorul final. De exemplu, unii oameni preferă să deschidă https://twitter.com in Firefox, în timp ce alții folosesc Chrome, Safari, Microsoft Edge.

În diagrama de mai jos puteți observa că în browserele mai vechi, caseta de conectare a Twitter nu afișează corect colțurile rotunjite, în timp ce Chrome modern afișează colțurile așa cum este conceput.

Testarea browserului încrucișat

Așadar, trebuie să ne asigurăm că aplicația web va funcționa conform așteptărilor în toate browserele populare, astfel încât mai mulți oameni să o poată accesa și utiliza.

Acest obiectiv poate fi îndeplinit cu Cross Browser Testarea a produsului pe fiecare browser din domeniul de aplicare.

Motive pentru problemele cross-browser

  1. Dimensiunea fontului nepotrivită în diferite browsere.
  2. JavaImplementările motorului de script diferă în Chrome (V8), Firefox (Maimuță Păianjen), Safari (JavaScriptCore) și Edge.
  3. Diferențe între validarea CSS și HTML, inclusiv gestionarea prefixelor furnizorului.
  4. Compatibilitate inconsistentă sau parțială cu funcțiile HTML5 și ECMAScript în versiunile mai vechi de browser.
  5. Alinierea paginii, dimensionarea div-urilor și variațiile de randare flexbox sau grilă.
  6. Diferențe de orientare a imaginii și profil de culoare.
  7. Incompatibilitatea browserului cu sistemul de operare subiacent, inclusiv particularitățile WebView pentru mobil Android și iOS.

Cum să faceți testarea încrucișată a browserului

Dacă folosim Selenium WebDriver, putem automatiza cazurile de testare pentru Chrome, Firefox, Microsoft Edgeși browserele Safari.

Pentru a executa cazuri de testare cu diferite browsere pe aceeași mașină în același timp, putem integra TestNG cadru cu Selenium WebDriver. Pentru o acoperire mai largă a sistemului de operare și a versiunilor, aceeași suită poate fi direcționată către grile cloud precum Sauce Labs, BrowserStack sau LambdaTest printr-un endpoint WebDriver la distanță.

Fișierul testing.xml va arăta astfel:

Testarea browserului încrucișat

Acest testing.xml se va mapa cu Caz de testare care arată astfel:

Testarea browserului încrucișat

Deoarece fișierul testing.xml are mai multe etichete Test („ChromeTest”, „FirefoxTest', 'EdgeTest'), acest caz de testare se va executa o dată pentru fiecare browser.

Primul test „ChromeTest” va transmite valoarea parametrului „browser” ca „chrome”, deci ChromeDriver va fi executat. Acest caz de testare va rula pe browserul Chrome.

Al doilea testFirefoxTestul va trece valoarea parametrului „browser” ca „Firefox„, deci FirefoxDriverul va fi executat. Acest caz de testare va rula pe Firefox browser. Adăugarea unui test Edge sau Safari urmează același model.

Guru99CrossBrowserScript.java

Completa 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>

NOTĂ: Pentru a rula testul, faceți clic dreapta pe testing.xml, selectați Executare ca și faceți clic pe TestNG După.

 Testarea browserului încrucișat

Scalare cu grile de browser în cloud

Alergare Selenium WebDriver acoperă local două sau trei browsere, dar utilizatorii reali accesează site-uri din sute de combinații de sisteme de operare și browsere. Laboratoare cloud precum Laboratoarele de sos, BrowserStack și Test Lambda expuneți un endpoint WebDriver la distanță. Indicați același lucru Selenium testele la nivelul grilei, transmit capabilitățile dorite pentru browser, versiune, sistem de operare și rezoluție, iar suita se scalează pe orizontală fără a gestiona driverele locale.

Grilele moderne includ, de asemenea, funcții asistate de inteligență artificială, cum ar fi diferențierea vizuală de regresie, localizarea elementelor cu auto-reparare și scorarea instabilității, care reduc cheltuielile de întreținere pentru suitele de testare cross-browser de lungă durată.

Notă: Programul dat a fost construit și testat pe Selenium 4, Crom, Firefox și Microsoft EdgeDacă programele dau o eroare, actualizați fișierele binare ale driverelor pentru a se potrivi cu versiunea browserului instalat sau utilizați Selenium Manager care rezolvă automat driverele.

Descărcați Selenium Fișiere de proiect pentru demonstrația din acest tutorial

Întrebări frecvente

Testarea cross-browser este o tehnică de testare funcțională și vizuală care verifică dacă o aplicație web funcționează la fel pe Chrome, Firefox, Safari și Microsoft Edge pe desktop și mobil, inclusiv diferite sisteme de operare și dimensiuni ale ferestrelor de vizualizare.

Selenium WebDriver oferă o singură API care gestionează Chrome, Firefox, Edge și Safari prin protocolul oficial W3C WebDriver. Același cod de testare rulează împotriva oricărui browser, ceea ce face ca Selenium WebDriver, standardul de facto pentru automatizarea browserului și testarea cross-browser.

TestNG folosește fișierul testing.xml cu parallel="tests" și thread-count pentru a lansa fiecare etichetă Test în propriul fir de execuție. Combinat cu o configurație @BeforeTest parametrizată, același Selenium Suita WebDriver rulează pe Chrome, Firefoxși Edge simultan, reducând timpul total de execuție.

Sauce Labs, BrowserStack și LambdaTest oferă servicii găzduite Selenium Grile care expun mii de combinații de sisteme de operare și browsere, inclusiv iOS Safari și Android Chrome. Indicați un RemoteWebDriver la punctul final al grilei și transmiteți capacitățile dorite pentru a rula același cod la scară largă.

Motoarele de regresie vizuală bazate pe inteligență artificială, cum ar fi cele încorporate în Applitools, Percy și modulele vizuale ale BrowserStack și LambdaTest, compară capturile de ecran semantic în loc de pixel cu pixel. Acestea ignoră diferențele așteptate de anti-aliasing sau de randare a fonturilor între Chrome, Firefox, Safari și Edge, detectând în același timp regresiile autentice ale layout-ului, ceea ce reduce semnificativ numărul fals pozitiv în testele cross-browser.

Da. Framework-uri moderne precum Healenium, Testim, Mabl și funcțiile de inteligență artificială din Selenium IDE analizează DOM-ul și propune selectori XPath sau CSS stabili. Când un localizator se defectează din cauza unei modificări a interfeței utilizator, selectorii generați de inteligența artificială se auto-repară prin notarea elementelor din apropiere și alegerea celei mai apropiate potriviri, ceea ce menține suitele de testare cross-browser ecologice, cu mai puțină întreținere manuală.

Defectele comune includ neconcordanțe de randare a fonturilor și CSS-ului, JavaInconsistențe ale motorului de script, suport defectuos pentru funcții HTML5 sau ES, probleme de orientare a imaginilor, probleme de aliniere a paginilor, prefixe lipsă ale furnizorilor și erori specifice sistemului de operare pe iOS, Safari sau Android Chrome.

Rezumați această postare cu: