Tests multi-navigateurs utilisant Selenium pilote web
Tests multi-navigateurs utilisant Selenium
Test de navigateur croisé est un type de test fonctionnel pour vérifier que votre application Web fonctionne comme prévu dans différents navigateurs.
Pourquoi avons-nous besoin de tests multi-navigateurs ?
Les applications Web sont totalement différentes de Windows applications. Une application Web peut être ouverte dans n'importe quel navigateur par l'utilisateur final. Par exemple, certaines personnes préfèrent ouvrir https://twitter.com in Firefox navigateur, tandis que d'autres peuvent utiliser Navigateur Chrome or IE.
Dans le diagramme ci-dessous, vous pouvez observer que dans IE, la boîte de connexion de Twitter n'affiche pas de courbe à tous les coins, mais nous pouvons la voir dans le navigateur Chrome.
Nous devons donc nous assurer que l’application Web fonctionnera comme prévu dans tous les navigateurs courants afin que davantage de personnes puissent y accéder et l’utiliser.
Ce motif peut être réalisé avec Cross Browser USP,EP, BP du produit.
Raison des problèmes entre navigateurs
- Incompatibilité de taille de police dans différents navigateurs.
- JavaL'implémentation du script peut être différente.
- La différence de validation CSS et HTML peut être là.
- Certains navigateurs ne prennent toujours pas en charge HTML5.
- Alignement des pages et taille des div.
- Orientation des images.
- Incompatibilité du navigateur avec le système d'exploitation. Etc.
Comment effectuer des tests multi-navigateurs
Si nous utilisons Selenium WebDriver, nous pouvons automatiser les cas de test en utilisant Internet Explorer, FireFox, Chrome, Safari.
Pour exécuter des cas de test avec différents navigateurs sur la même machine en même temps, nous pouvons intégrer TestNG cadre avec Selenium Pilote Web.
Votre testing.xml ressemblera à ça,
Ce testing.xml correspondra au Cas de test qui ressemblera à ça
Ici parce que le testing.xml a deux balises de test (« ChromeTest », »FirefoxTest'), ce scénario de test s'exécutera deux fois pour 2 navigateurs différents.
Le premier test « ChromeTest » transmettra la valeur du paramètre « navigateur » comme « chrome » afin que ChromeDriver soit exécuté. Ce scénario de test s'exécutera sur le navigateur Chrome.
Deuxième essai'FirefoxTest' transmettra la valeur du paramètre 'navigateur' comme 'Firefox' donc FirefoxLe pilote sera exécuté. Ce scénario de test s'exécutera sur FireFox navigateur.
Guru99CrossBrowserScript.java
Code complet :
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.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 Edge.exe System.setProperty("webdriver.edge.driver",".\\MicrosoftWebDriver.exe"); //create Edge instance driver = new EdgeDriver(); } 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="2" 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 lancer le test, faites un clic droit sur l'icône test.xml, Sélectionnez Exécuter en tant que, puis cliquez sur TestNG
Résumé
- Les tests multi-navigateurs sont une technique permettant de tester une application Web avec différents navigateurs Web.
- Selenium peut prendre en charge différents types de outil de test multi-navigateurs pour l'automatisation.
- Selenium peut être intégré avec TestNG pour effectuer des tests multi-navigateurs.
- À partir des paramètres de testing.xml, nous pouvons transmettre le nom du navigateur et, dans un cas de test, nous pouvons créer une référence WebDriver en conséquence.
Remarque: Le programme donné a été construit et testé sur Selenium 3.0.1, Chrome 56.0.2924.87, Firefox 47.0.2 & Microsoft Edge 14.14393. Si les programmes génèrent une erreur, veuillez mettre à jour le pilote
Télécharger Selenium Fichiers de projet pour la démo de ce didacticiel