how run selenium webdriver different popular browsers
Selenium ne prend en charge que les applications Web et pour les ouvrir, nous avons besoin d'un navigateur. Selenium peut prendre en charge divers navigateurs pour l'automatisation des tests.
Dans ce tutoriel, nous vous expliquerons comment configurer les pilotes pour les différents navigateurs disponibles sur le marché.
Dans l'industrie actuelle, il n'y a que trois navigateurs populaires largement utilisés, à savoir Google Chrome, Mozilla Firefox et Internet Explorer. Cependant, Selenium prend également en charge d'autres navigateurs. Pour exécuter notre script sur différents navigateurs, nous avons besoin du pilote de ce navigateur.
=> Lisez tous les tutoriels Selenium ici
Ce que vous apprendrez:
- Comment configurer les pilotes pour les différents navigateurs
- Test inter-navigateurs à l'aide de Selenium WebDriver
- Conclusion
Comment configurer les pilotes pour les différents navigateurs
Outil recommandé:
# 1) Test Lambda
Effectuez des tests d'automatisation Selenium sur une grille Selenium en ligne évolutive, sécurisée et fiable basée sur le cloud. Accélérez votre automatisation des tests Selenium en même temps augmentez votre couverture de test en testant sur une infrastructure en ligne de plus de 2000 environnements de bureau et de navigateur mobile.
=> Visitez le site Web de LambdaTest
Lorsque nous commençons avec l'automatisation Selenium, notre toute première ligne de code se présente comme suit:
Pilote WebDriver = nouveau FireFoxDriver ();
Cela signifie que WebDriver est une interface et que nous définissons une variable de référence (pilote) dont le type est une interface.
Désormais, tout objet que nous lui attribuons doit être une instance d'une classe (FireFoxDriver) ou tout autre pilote qui implémente cette interface. Dans notre cas, FireFoxDriver est une classe et l'interface est WebDriver.
Lorsque toute la configuration de notre pilote est terminée, nous exécutons toute commande Selenium telle que:
driver.getTitle ();
Reportez-vous à la capture d'écran:
tests fonctionnels vs tests non fonctionnels
Ce qui se passe maintenant, c'est qu'en interne une requête HTTP est créée et envoyée au pilote de navigateur spécifique que nous avons défini, le pilote de navigateur utilise ce serveur HTTP pour obtenir les requêtes HTTP et il détermine les étapes nécessaires pour implémenter la commande Selenium.
Notre logique créée est exécutée sur le navigateur, puis le résultat de l'exécution est renvoyé au serveur HTTP et il renvoie à nouveau l'état au script d'automatisation.
Ainsi, après avoir défini le pilote, nous pouvons accéder à toutes les méthodes intégrées de la classe du pilote comme:
- findElement ();
- Fermer();
- getClass (); et beaucoup plus
Reportez-vous à la capture d'écran:
Pour accéder à ces méthodes, saisissez ' chauffeur. »Dans l'éditeur et il affichera toutes les méthodes ou bien vous pouvez appuyer sur« ctrl + espace »et il vous montrera les méthodes.
Reportez-vous à la capture d'écran:
Parfois, les méthodes intégrées ne sont pas accessibles lorsque vous appuyez sur «ctrl + espace». Ensuite, vous devez vérifier les paramètres de chemin JAVA_HOME définis dans la variable d'environnement et vous assurer qu'ils sont corrects.
Étapes de configuration de la variable d'environnement:
- Allez dans Panneau de configuration -> Cliquez sur Système
- Accédez aux paramètres système avancés
- Cliquez sur le bouton Variables d'environnement
- Définissez le chemin JAVA_HOME en cliquant sur le nouveau bouton.
Selenium est livré avec le pilote Mozilla Firefox par défaut qui est fourni dans le fichier jar Selenium WebDriver. C’est pourquoi pour appeler le pilote Firefox, aucune configuration n’est requise. Si nous voulons utiliser d'autres navigateurs, nous devons configurer sa propriété système.
Lecture recommandée => Test de navigateurs croisés à l'aide de Selenium Grid
Test inter-navigateurs à l'aide de Selenium WebDriver
Maintenant, nous allons voir la configuration et l'exécution des pilotes dans les navigateurs mentionnés ci-dessous:
#1) Mozilla Firefox
#deux) Google Chrome
# 3) Internet Explorer
# 4) Opéra
# 5) Pilote fantôme ou PhantomJS
# 6) Unité HTML
Les pilotes pour les navigateurs mentionnés (à l'exception de PhantomJS et de l'unité HTML - vérifiez ci-dessous pour ceux-ci) peuvent être téléchargés à partir d'ici: SéléniumHQ
En supposant que vous connaissez tous les différents navigateurs mentionnés ci-dessus, je vais maintenant vous expliquer ce que Pilote fantôme et Pilote d'unité HTML fonctionnalité et comment les configurer pour votre script.
# 1) Pilote d'unité HTML
En utilisant ce pilote, nous pouvons faire des tests de navigateur sans tête, ce qui signifie qu'il n'y a pas d'interface graphique que vous pouvez voir car il s'exécute en interne. Et vous ne pouvez pas effectuer toutes les opérations comme vous le faites dans les navigateurs normaux.
En règle générale, pour les tests, le pilote d'unité HTML n'est pas recommandé. Cependant, nous pouvons l'utiliser car il est plus rapide, l'implémentation la plus légère de WebDriver est utilisée pour générer des données de test, pour transmettre le contenu d'une page Web à un autre programme ou script.
Pour utiliser le pilote d'unité HTML, il n'est pas nécessaire d'installer des API ou des fichiers jar supplémentaires. Vous pouvez l'utiliser une fois que vous avez le fichier jar autonome du serveur Selenium.
Référez-vous au code ci-dessous:
//Create a Java Project, under it create a package, and under package create a class packageheadless_browser_testing; import org.openqa.Selenium.WebDriver; importorg.openqa.Selenium.htmlunit.HtmlUnitDriver; import org.testng.Assert; import org.testng.annotations.Test; publicclassvefifyTestTitle { //You can run your script with TestNG or JUnit or using Java Application // I am using TestNG and using TestNG annotations @Test publicvoidverifyFacebookTitle() { //Call HtmlUnit Driver WebDriver driver = newHtmlUnitDriver(true); //It will get the Facebook URL and run the script in background, means you //will not see the Facebook page driver.get('http://www.facebook.com'); //It will fetch the FB title and store in String String facebook_Title= driver.getTitle(); //Assert condition will check the expected and actual title, if it matches //our test passes Assert.assertTrue(facebook_Title.contains('Facebook')); System.out.println(facebook_Title); } }
Production : Facebook - Connectez-vous ou inscrivez-vous
PASSÉ : verifyFacebookTitle
Le pilote HTML Unit n'est pas recommandé pour les applications complexes et qui utilise jquery ou javascript ou HTML 5. Par défaut, il ne prend pas en charge javascript. Par conséquent, vous devez donner une condition vraie pour la soutenir.
# 2) Pilote PhantomJS
Le navigateur PhantomJS est également utilisé pour effectuer des tests de navigateur sans tête. Il utilise une API JavaScript. Vous pouvez l'utiliser pour tester des sites Web sans tête et accéder à des pages Web. Un avantage par rapport au pilote d'unité HTML est qu'il peut capturer des captures d'écran. Cela signifie que votre test s'exécutera en arrière-plan et capturera les captures d'écran.
Pour utiliser le navigateur PhantomJS avec Selenium WebDriver, nous devons utiliser et télécharger GhostDriver. Il s'agit d'une implémentation du protocole filaire WebDriver dans un navigateur JS simple pour PhantomJS. Maintenant, dans la dernière version de PhantomJS, ils avaient intégré GhostDriver avec PhantomJS. Ainsi, nous n'avons pas à l'installer séparément maintenant.
Téléchargez le fichier PhantomJs.exe à partir d'ici: PhantomJs
Pour exécuter le PhantomJS, nous avons besoin du pilote PhantomJS. Lien de téléchargement: Pilote PhantomJS
Et nous devons définir le fichier de propriétés PhantomJs.binary.path, lorsque nous exécutons le script.
Référez-vous au code ci-dessous:
//Create a Java Project, then under it create a package, under package create a class packageheadless_browser_testing; import java.io.File; import org.openqa.Selenium.WebDriver; import org.openqa.Selenium.phantomjs.PhantomJSDriver; import org.testng.annotations.Test; publicclass phantom_Js_Driver { //You can run your script with TestNG or JUnit or using Java Application // I am using TestNG and using TestNG annotations @Test publicvoidverifyFacebookTitle() { //Set the path to access the phantomjs.exe file File src = newFile('E:\exe\phantomjs-2.1.1-windows\bin\phantomjs.exe'); //You need to specify the property here and give path of driver System.setProperty('phantomjs.binary.path', src.getAbsolutePath()); //Call your PhantomJs Driver WebDriver driver = newPhantomJSDriver(); //It will get the Facebook URL and run the script in background, means you //will not see the Facebook page driver.get('http://www.facebook.com'); //Print the currentURL of the page System.out.println(driver.getCurrentUrl()); } }
Production : https://www.facebook.com/
PASSÉ: verifyFacebookTitle
# 3) Pilote Mozilla Firefox
Comment exécuter WebDriver dans le navigateur Firefox:
comment ajouter un élément à un tableau en java
Pour appeler Firefox Driver, il n'est pas nécessaire d'installer ou de configurer des fichiers jar supplémentaires. Il s'agit du pilote par défaut pris en charge par Selenium WebDriver.
Reportez-vous au code ci-dessous pour l'exécution:
package Different_Drivers; import org.openqa.Selenium.WebDriver; import org.openqa.Selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; import org.testng.Assert; public class FF_Driver { @Test public void Test_Gmail_Login() { WebDriver driver = new FirefoxDriver(); driver.get(“http://www.gmail.com”); driver.findElement(By.id('Email')).sendKeys('Enter user name'); driver.findElement(By.id('next')).click(); Thread.sleep(2000); driver.findElement(By.id('Passwd')).sendKeys('Enter Password'); driver.findElement(By.id('signIn')).click(); Thread.sleep(2000); String title_Of_Page = driver.getTitle(); Assert.assertEquals(driver.getTitle(), title_Of_Page); System.out.println('Page title matched'); } }
Production : Le titre de la page correspond
PASSÉ : Test_Gmail_Login
# 4) Pilote Google Chrome
Comment exécuter WebDriver dans le navigateur Chrome:
Pour appeler le pilote Google Chrome, téléchargez d'abord le pilote, puis définissez la propriété système à l'aide du code ci-dessous:
package Different_Drivers; import org.openqa.Selenium.WebDriver; import org.openqa.Selenium.chrome.ChromeDriver; import org.testng.annotations.Test; importjava.util.Iterator; import java.util.Set; public class googleChrome_Driver { @Test public void Test_Rediff_Alert()throws InterruptedException{ //set system property, so that we can access chrome driver System.setProperty('webdriver.chrome.driver', 'E:\chromedriver.exe'); // It will open the Chrome browser and execute your logic WebDriverdriver = new ChromeDriver(); //Open rediff page in chrome browser driver.get(“http://www.rediffmail.com”); //wait for page to load Thread.sleep(5000); // It will get and store the main window page handle or id String mainpage = driver.getWindowHandle(); String subwinhandleString = null; //set a loop which will store all window pop up handles Set handle = driver.getWindowHandles(); Iterator iterator = handle.iterator(); while(iterator.hasNext ()) { subwinhandleString = iterator.next( ); } driver.switchTo().window(subwinhandleString); System.out.println(driver.getTitle()); Thread.sleep(2000); driver.close(); //Again switch back to main window driver.switchTo().window(mainpage); System.out.println(driver.getTitle()); } }
Production : Bienvenue sur rediff.com
Rediff.com: Achats en ligne, Rediffmail, Dernières nouvelles de l'Inde, Affaires, Bollywood, Sports, Stock, Score de cricket en direct, Argent, Critiques de films
PASSÉ : Test_Rediff_Alert
Lire aussi=> Tutoriel Selenium - Localiser les éléments dans les navigateurs Chrome et IE
# 5) Pilote Internet Explorer
Comment exécuter WebDriver dans le navigateur IE:
Pour appeler le pilote Internet Explorer, téléchargez le pilote et définissez une propriété système.
Référez-vous au code ci-dessous:
package Different_Drivers; import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.Test; public class internetExplorer_Driver { @Test public void ieDriver() throws InterruptedException { //set system property, so that we can access IE driver System.setProperty('webdriver.ie.driver','E\IEDriverServer.exe'); //set desiredcapabilites for calling ie driver DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); capabilities.setCapability (InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); WebDriver driver = new InternetExplorerDriver(capabilities); driver.get('https://www.google.com'); Thread.sleep(5000); String title_Of_Page = driver.getTitle(); System.out.println(title_Of_Page); } }
Production : Google
PASSÉ : ieDriver
# 6) Pilote Opera
Pour appeler Opera Driver, téléchargez le pilote et définissez la propriété système.
Référez-vous au code ci-dessous:
package Different_Drivers; import org.openqa.Selenium.WebDriver; importorg.openqa.Selenium.opera.OperaDriver; import org.testng.annotations.Test; import org.testng.Assert; public class operaDriver { @Test public void createAccount(){ //set system property, so that we can access opera driver System.setProperty('webdriver.opera.driver', 'E:\operadriver.exe'); // it will open the opera browser WebDriver driver = newOperaDriver(); driver.get('https://www.google.com/intl/en/mail/help/about.html'); // Here driver will try to find out create an account link on the application WebElement createAccount = driver.findElement(By.xpath('.//*(@id='gmail-create-account')')); Assert.assertTrue(createAccount.isDisplayed()); //Create Account will be clicked only if the above condition is true createAccount.click(); System.out.println(createAccount.getText()); } }
Production : Créer un compte
PASSÉ : operaDriver
Lire aussi=> Annotations TestNG dans Selenium
Conclusion
Dans ce didacticiel, j'ai expliqué comment configurer et utiliser des pilotes pour différents navigateurs.
Nous avons vu en quoi le pilote d'unité HTML et le pilote PhantomJS sont différents des autres navigateurs couramment utilisés. La raison derrière cela est qu'ils ne sont pas utilisés pour la navigation courante telle que Google Chrome et autres; au lieu de cela, ils fonctionnent en interne et exécutent nos commandes plus rapidement car il ne prend pas en charge l'interface graphique. Nous pouvons également effectuer des scripts côté serveur avec PhantomJS.
Maintenant que nous avons compris comment configurer les pilotes et les faire fonctionner sur différents navigateurs, nous devons comprendre pourquoi nous faisons cela. Comme vous le savez tous, Selenium ne prend en charge que les applications Web et pour les ouvrir, nous avons besoin d'un navigateur.
Il existe différents pilotes (décrits ci-dessus) disponibles pour ouvrir ces navigateurs. Un WebDriver est une interface qui contient toutes les méthodes abstraites qui y sont définies. Par conséquent, nous appelons ces méthodes décrites dans ce didacticiel pour effectuer nos tâches.
Faites-nous savoir si vous avez des questions / commentaires sur ce tutoriel.
lecture recommandée
- Tutoriel Cucumber Selenium: Intégration Cucumber Java Selenium WebDriver
- Introduction à Selenium WebDriver - Tutoriel Selenium # 8
- Implémentation de notre premier script WebDriver - Tutoriel Selenium WebDriver # 10
- FAQ sur le sélénium
- Comment gérer les alertes / fenêtres contextuelles dans Selenium WebDriver - Tutoriel Selenium # 16
- Attente implicite et explicite dans Selenium WebDriver (types d'attentes Selenium)
- Guide pour générer des rapports d'étendue dans Selenium WebDriver
- Tutoriel GeckoDriver Selenium: Comment utiliser GeckoDriver dans les projets Selenium