Tests multi-navigateurs utilisant Selenium pilote web

โšก Rรฉsumรฉ intelligent

Tests multi-navigateurs utilisant Selenium WebDriver vรฉrifie qu'une application web se comporte de maniรจre cohรฉrente sur Chrome. FirefoxSafari et Edge. Ce tutoriel explique comment les combiner. Selenium WebDriver avec TestNG pour lancer des sessions parallรจles, valider le rendu et รฉtendre la couverture aux navigateurs de bureau et mobiles modernes.

  • ๐ŸŒ Pourquoi c'est important: Les utilisateurs rรฉels ouvrent la mรชme page dans diffรฉrents navigateurs ; par consรฉquent, les mises en page, les scripts et les styles doivent รชtre identiques partout afin de prรฉserver les conversions et lโ€™accessibilitรฉ.
  • ๐Ÿงช Selenium Configuration de WebDriver : Configurez ChromeDriver, GeckoDriver, EdgeDriver et SafariDriver, puis sรฉlectionnez l'instance appropriรฉe via une mรฉthode paramรฉtrรฉe unique.
  • ๐Ÿ“ฑ TestNG Exรฉcutions parallรจles : Un fichier testing.xml avec parallel="tests" dรฉclenche Chrome, Firefoxet les suites Edge en mรชme temps, rรฉduisant ainsi les cycles de retour d'information pour les grands packs de rรฉgression.
  • โœ… Dรฉfauts courants constatรฉs : Mise ร  l'รฉchelle des polices, dรฉcalages de mise en page CSS, JavaLes lacunes en matiรจre de scripts, la prise en charge d'HTML5, l'orientation des images et les incompatibilitรฉs entre le systรจme d'exploitation et le navigateur apparaissent rapidement.
  • ๏ธ Laboratoires cloud et IA : Sauce Labs, BrowserStack et LambdaTest รฉtendent la couverture ร  des milliers de paires systรจme d'exploitation-navigateur, et la rรฉgression visuelle pilotรฉe par l'IA et les localisateurs auto-rรฉparateurs augmentent la fiabilitรฉ.

Tests multi-navigateurs dans Selenium pilote web

Pourquoi avons-nous besoin de tests multi-navigateurs ?

Les applications web sont trรจs diffรฉrentes des applications de bureau natives. Une application web peut รชtre ouverte dans n'importe quel navigateur par l'utilisateur final. Par exemple, certaines personnes prรฉfรจrent ouvrir une application web depuis n'importe quel navigateur. https://twitter.com in Firefox, tandis que d'autres utilisent Chrome, Safari, Microsoft Edge.

Dans le schรฉma ci-dessous, vous pouvez observer que sur les navigateurs plus anciens, la zone de connexion de Twitter n'affiche pas correctement les coins arrondis, tandis que Chrome moderne affiche les coins comme prรฉvu.

Test de navigateur croisรฉ

Nous devons donc nous assurer que l'application web fonctionnera comme prรฉvu dans tous les navigateurs populaires, afin qu'un plus grand nombre de personnes puissent y accรฉder et l'utiliser.

Cet objectif peut รชtre atteint grรขce ร  la compatibilitรฉ multi-navigateurs. Tests du produit sur tous les navigateurs concernรฉs.

Raisons des problรจmes de compatibilitรฉ entre navigateurs

  1. Incompatibilitรฉ de taille de police dans diffรฉrents navigateurs.
  2. JavaLes implรฉmentations du moteur de script diffรจrent selon Chrome (V8), Firefox (SpiderMonkey), Safari (JavaScriptCore), et Edge.
  3. Diffรฉrences de validation entre CSS et HTML, notamment en ce qui concerne la gestion des prรฉfixes fournisseurs.
  4. Prise en charge incohรฉrente ou partielle des fonctionnalitรฉs HTML5 et ECMAScript dans les anciennes versions des navigateurs.
  5. Alignement des pages, dimensionnement des divs et variations de rendu flexbox ou grille.
  6. Diffรฉrences d'orientation et de profil colorimรฉtrique de l'image.
  7. Incompatibilitรฉ du navigateur avec le systรจme d'exploitation sous-jacent, y compris des particularitรฉs de WebView mobile sur Android et iOS.

Comment effectuer des tests multi-navigateurs

Si nous utilisons Selenium Avec WebDriver, nous pouvons automatiser les cas de test pour Chrome. Firefox, Microsoft Edgeet les navigateurs Safari.

Pour exรฉcuter des cas de test avec diffรฉrents navigateurs sur la mรชme machine simultanรฉment, nous pouvons intรฉgrer le TestNG cadre avec Selenium WebDriver. Pour une couverture plus large des systรจmes d'exploitation et des versions, la mรชme suite peut รชtre dirigรฉe vers des grilles cloud telles que Sauce Labs, BrowserStack ou LambdaTest via un point de terminaison WebDriver distant.

Votre fichier testing.xml ressemblera ร  ceci :

Test de navigateur croisรฉ

Ce testing.xml correspondra au Cas de test ce qui ressemble ร  ceci :

Test de navigateur croisรฉ

Parce que le fichier testing.xml contient plusieurs balises Test (ยซ ChromeTest ยป, ยซ FirefoxTest', 'EdgeTest'), ce cas de test sera exรฉcutรฉ une fois pour chaque navigateur.

Le premier test, ยซ ChromeTest ยป, transmet la valeur ยซ chrome ยป au paramรจtre ยซ browser ยป, ce qui dรฉclenche lโ€™exรฉcution de ChromeDriver. Ce test sโ€™exรฉcutera sur le navigateur Chrome.

Le deuxiรจme test 'FirefoxTest' transmettra la valeur du paramรจtre 'navigateur' comme 'Firefox', donc FirefoxLe pilote sera exรฉcutรฉ. Ce cas de test s'exรฉcutera sur le Firefox Navigateur. L'ajout d'un test Edge ou Safari suit le mรชme schรฉma.

Guru99CrossBrowserScript.java

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

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

NOTE: Pour exรฉcuter le test, cliquez avec le bouton droit sur test.xml, sรฉlectionnez Exรฉcuter en tant que, puis cliquez sur TestNG Suite.

 Test de navigateur croisรฉ

Mise ร  l'รฉchelle avec les grilles du navigateur cloud

Fonctionnement Selenium WebDriver prend en charge localement deux ou trois navigateurs, mais les utilisateurs rรฉels accรจdent aux sites depuis des centaines de combinaisons de systรจmes d'exploitation et de navigateurs. Les laboratoires cloud tels que Laboratoires de sauce, BrowserStack et LambdaTest exposez un point de terminaison WebDriver distant. Pointez le mรชme Selenium Les tests effectuรฉs sur la grille vรฉrifient les capacitรฉs requises pour le navigateur, la version, le systรจme d'exploitation et la rรฉsolution, et la suite s'adapte horizontalement sans gรฉrer les pilotes locaux.

Les grilles modernes font รฉgalement apparaรฎtre des fonctionnalitรฉs assistรฉes par l'IA telles que la comparaison visuelle de rรฉgression, les localisateurs d'รฉlรฉments auto-rรฉparateurs et le score de fiabilitรฉ, ce qui rรฉduit les coรปts de maintenance des suites de tests multi-navigateurs de longue durรฉe.

ร€ noter: Le programme donnรฉ a รฉtรฉ construit et testรฉ sur Selenium 4, Chrome, Firefox et Microsoft EdgeSi les programmes gรฉnรจrent une erreur, veuillez mettre ร  jour les fichiers binaires du pilote pour qu'ils correspondent ร  la version de votre navigateur installรฉe, ou utilisez Selenium Gestionnaire qui rรฉsout automatiquement les problรจmes de pilotes.

Tรฉlรฉchargez le Selenium Fichiers de projet pour la dรฉmo de ce didacticiel

FAQ

Les tests multi-navigateurs sont une technique de test fonctionnelle et visuelle qui vรฉrifie qu'une application web fonctionne de la mรชme maniรจre sur Chrome. Firefox, Safari et Microsoft Edge sur ordinateur et mobile, y compris diffรฉrents systรจmes d'exploitation et tailles d'รฉcran.

Selenium WebDriver fournit une API unique qui pilote Chrome, FirefoxEdge et Safari utilisent le protocole WebDriver officiel du W3C. Le mรชme code de test fonctionne sur n'importe quel navigateur, ce qui permet de tester diffรฉrentes versions. Selenium WebDriver est la norme de facto pour l'automatisation des navigateurs et les tests multi-navigateurs.

TestNG utilise le fichier testing.xml avec parallel="tests" et thread-count pour lancer chaque balise Test dans son propre thread. Combinรฉ ร  une configuration @BeforeTest paramรฉtrรฉe, le mรชme Selenium La suite WebDriver fonctionne sous Chrome, Firefoxet Edge simultanรฉment, rรฉduisant ainsi le temps d'exรฉcution global.

Sauce Labs, BrowserStack et LambdaTest proposent des solutions hรฉbergรฉes Selenium Des grilles qui exposent des milliers de combinaisons de systรจmes d'exploitation et de navigateurs, y compris Safari sur iOS et Android Chrome. Pointez un RemoteWebDriver vers le point de terminaison de la grille et transmettez les capacitรฉs souhaitรฉes pour exรฉcuter le mรชme code ร  grande รฉchelle.

Les moteurs de rรฉgression visuelle basรฉs sur l'IA, tels que ceux intรฉgrรฉs ร  Applitools, Percy et les modules visuels de BrowserStack et LambdaTest, comparent les captures d'รฉcran sรฉmantiquement plutรดt que pixel par pixel. Ils ignorent les diffรฉrences attendues d'anticrรฉnelage ou de rendu des polices entre Chrome, Firefox, Safari et Edge tout en dรฉtectant les vรฉritables rรฉgressions de mise en page, ce qui rรฉduit considรฉrablement les faux positifs dans les pipelines de tests multi-navigateurs.

Oui. Les frameworks modernes tels que Healenium, Testim, Mabl, et les fonctionnalitรฉs d'IA dans Selenium L'IDE analyse le DOM et propose des sรฉlecteurs XPath ou CSS stables. Lorsqu'un sรฉlecteur devient invalide suite ร  une modification de l'interface utilisateur, les sรฉlecteurs gรฉnรฉrรฉs par l'IA se rรฉparent automatiquement en รฉvaluant les รฉlรฉments voisins et en sรฉlectionnant la correspondance la plus proche, ce qui permet de maintenir la compatibilitรฉ des suites de tests multi-navigateurs avec un minimum de maintenance manuelle.

Les dรฉfauts courants incluent des incohรฉrences dans le rendu des polices et du CSS, JavaIncohรฉrences du moteur de script, prise en charge dรฉfectueuse des fonctionnalitรฉs HTML5 ou ES, problรจmes d'orientation des images, problรจmes d'alignement des pages, prรฉfixes de fournisseurs manquants et dรฉfaillances spรฉcifiques au systรจme d'exploitation sur Safari iOS ou Android Chrome.

Rรฉsumez cet article avec :