Sélénium - Webdriver
WebDriver est un outil permettant d'automatiser les tests d'applications Web. Il est populairement connu sous le nom de Selenium 2.0. WebDriver utilise un cadre sous-jacent différent, tandis que Selenium RC utilise JavaScript Selenium-Core intégré dans le navigateur qui présente certaines limitations. WebDriver interagit directement avec le navigateur sans aucun intermédiaire, contrairement à Selenium RC qui dépend d'un serveur. Il est utilisé dans le contexte suivant -
Tests multi-navigateurs comprenant une fonctionnalité améliorée pour les navigateurs qui n'est pas bien prise en charge par Selenium RC (Selenium 1.0).
Gestion de plusieurs cadres, de plusieurs fenêtres de navigateur, de fenêtres contextuelles et d'alertes.
Navigation de page complexe.
Navigation utilisateur avancée telle que le glisser-déposer.
Éléments d'interface utilisateur basés sur AJAX.
Architecture
WebDriver est mieux expliqué avec un schéma d'architecture simple comme indiqué ci-dessous.
Selenium RC contre WebDriver
Sélénium RC | Selenium WebDriver |
---|---|
L'architecture de Selenium RC est compliquée, car le serveur doit être opérationnel avant de démarrer un test. | L'architecture de WebDriver est plus simple que Selenium RC, car elle contrôle le navigateur à partir du niveau du système d'exploitation. |
Le serveur Selenium agit comme un intermédiaire entre le navigateur et les commandes Selenese. | WebDriver interagit directement avec le navigateur et utilise le moteur du navigateur pour le contrôler. |
L'exécution du script Selenium RC est plus lente, car il utilise un Javascript pour interagir avec RC. | WebDriver est plus rapide, car il interagit directement avec le navigateur. |
Selenium RC ne peut pas prendre en charge l'exécution sans tête car il a besoin d'un vrai navigateur pour fonctionner. | WebDriver peut prendre en charge l'exécution sans tête. |
C'est une API simple et petite. | API complexe et un peu grande par rapport à RC. |
API moins orientée objet. | API purement orientée objet. |
Impossible de tester les applications mobiles. | Peut tester les applications iPhone / Android. |
Script à l'aide de WebDriver
Laissez-nous comprendre comment travailler avec WebDriver. Pour la démonstration, nous utiliserionshttps://www.calculator.net/. Nous allons effectuer une "Calculatrice de pourcentage" qui se trouve sous "Calculatrice mathématique". Nous avons déjà téléchargé les fichiers JAR WebDriver requis. Reportez-vous au chapitre "Configuration de l'environnement" pour plus de détails.
Step 1 - Lancez "Eclipse" à partir du dossier Eclipse extrait.
Step 2 - Sélectionnez l'espace de travail en cliquant sur le bouton «Parcourir».
Step 3 - Créez maintenant un «Nouveau projet» dans le menu «Fichier».
Step 4 - Entrez le nom du projet et cliquez sur «Suivant».
Step 5- Allez dans l'onglet Bibliothèques et sélectionnez tous les JAR que nous avons téléchargés. Ajoutez une référence à tous les JAR du dossier Selenium WebDriver Library ainsi qu'à selenium-java-2.42.2.jar et selenium-java-2.42.2-srcs.jar.
Step 6 - Le package est créé comme indiqué ci-dessous.
Step 7 - Cliquez maintenant avec le bouton droit sur le package et sélectionnez «Nouveau» >> «Classe» pour créer une «classe».
Step 8 - Nommez maintenant la classe et faites-en la fonction principale.
Step 9 - Le plan de classe est présenté ci-dessous.
Step 10- Il est maintenant temps de coder. Le script suivant est plus facile à comprendre, car il contient des commentaires pour expliquer clairement les étapes. Veuillez consulter le chapitre «Localisateurs» pour comprendre comment capturer les propriétés des objets.
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class webdriverdemo {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
//Puts an Implicit wait, Will wait for 10 seconds before throwing exception
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//Launch website
driver.navigate().to("http://www.calculator.net/");
//Maximize the browser
driver.manage().window().maximize();
// Click on Math Calculators
driver.findElement(By.xpath(".//*[@id = 'menu']/div[3]/a")).click();
// Click on Percent Calculators
driver.findElement(By.xpath(".//*[@id = 'menu']/div[4]/div[3]/a")).click();
// Enter value 10 in the first number of the percent Calculator
driver.findElement(By.id("cpar1")).sendKeys("10");
// Enter value 50 in the second number of the percent Calculator
driver.findElement(By.id("cpar2")).sendKeys("50");
// Click Calculate Button
driver.findElement(By.xpath(".//*[@id = 'content']/table/tbody/tr[2]/td/input[2]")).click();
// Get the Result Text based on its xpath
String result =
driver.findElement(By.xpath(".//*[@id = 'content']/p[2]/font/b")).getText();
// Print a Log In message to the screen
System.out.println(" The Result is " + result);
//Close the Browser.
driver.close();
}
}
Step 11 - La sortie du script ci-dessus serait imprimée dans la console.
Commandes les plus utilisées
Le tableau suivant répertorie certaines des commandes les plus fréquemment utilisées dans WebDriver ainsi que leur syntaxe.
Sr.No. | Commande et description |
---|---|
1 | driver.get("URL") Pour accéder à une application. |
2 | element.sendKeys("inputtext") Entrez du texte dans une zone de saisie. |
3 | element.clear() Effacez le contenu de la zone de saisie. |
4 | select.deselectAll() Désélectionnez toutes les OPTIONS du premier SELECT sur la page. |
5 | select.selectByVisibleText("some text") Sélectionnez l'OPTION avec l'entrée spécifiée par l'utilisateur. |
6 | driver.switchTo().window("windowName") Déplacez le focus d'une fenêtre à une autre. |
sept | driver.switchTo().frame("frameName") Passez d'une image à l'autre. |
8 | driver.switchTo().alert() Aide à gérer les alertes. |
9 | driver.navigate().to("URL") Accédez à l'URL. |
dix | driver.navigate().forward() Pour avancer. |
11 | driver.navigate().back() Pour revenir en arrière. |
12 | driver.close() Ferme le navigateur actuel associé au pilote. |
13 | driver.quit() Quitte le pilote et ferme toute la fenêtre associée à ce pilote. |
14 | driver.refresh() Actualise la page actuelle. |