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 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.
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
- Incompatibilitรฉ de taille de police dans diffรฉrents navigateurs.
- JavaLes implรฉmentations du moteur de script diffรจrent selon Chrome (V8), Firefox (SpiderMonkey), Safari (JavaScriptCore), et Edge.
- Diffรฉrences de validation entre CSS et HTML, notamment en ce qui concerne la gestion des prรฉfixes fournisseurs.
- Prise en charge incohรฉrente ou partielle des fonctionnalitรฉs HTML5 et ECMAScript dans les anciennes versions des navigateurs.
- Alignement des pages, dimensionnement des divs et variations de rendu flexbox ou grille.
- Diffรฉrences d'orientation et de profil colorimรฉtrique de l'image.
- 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 :
Ce testing.xml correspondra au Cas de test ce qui ressemble ร ceci :
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.
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




