Selenium au Cucumber (Tutoriel sur le framework BDD)
โก Rรฉsumรฉ intelligent
Selenium au Cucumber forme un puissant cadre de dรฉveloppement pilotรฉ par le comportement (BDD) qui combine la syntaxe Gherkin en anglais simple avec Selenium Automatisation WebDriver. Ce tutoriel explique les prรฉrequis, prรฉsente trois scรฉnarios pratiques et montre comment les fichiers de fonctionnalitรฉs, les dรฉfinitions d'รฉtapes et une classe TestRunner s'intรจgrent pour exรฉcuter des tests de navigateur.
Dans ce tutoriel, vous apprendrez ร intรฉgrer Cucumber au Selenium WebDriver pour construire un framework de dรฉveloppement pilotรฉ par le comportement (BDD) lisible, maintenable et basรฉ sur les donnรฉes.
Qu'est-ce que le Cucumber?
Cucumber est un outil de test qui prend en charge le dรฉveloppement pilotรฉ par le comportement (BDD). Il dรฉcrit le comportement d'une application en langage Gherkin, ce qui permet aux non-dรฉveloppeurs de contribuer aux spรฉcifications de test sans avoir ร apprendre un langage de programmation. Pour en savoir plus, consultez notre Cucumber tutoriel.
Qu'est-ce que le Selenium?
Selenium est un outil d'automatisation utilisรฉ pour Essais fonctionnels des applications web. Selenium prend en charge plusieurs langages de programmation, notamment Java, Rubis, Pythonet C#, ce qui en fait un choix idรฉal pour les รฉquipes aux profils techniques variรฉs. Pour en savoir plus, consultez notre Selenium tutoriel.
Pourquoi utiliser Cucumber au Selenium?
Cucumber et Selenium sont deux des technologies de test les plus largement adoptรฉes. La plupart des organisations utilisent dรฉjร Selenium pour les tests fonctionnels et je souhaite ajouter des couches Cucumber au sommet parce que Cucumber facilite la lecture et la comprรฉhension du flux de l'application.
Cucumber est basรฉ sur le cadre de dรฉveloppement pilotรฉ par le comportement qui agit comme un pont entre les rรดles suivants :
- Ingรฉnieur logiciel et analyste commercial.
- Testeur manuel et testeur d'automatisation.
- Testeur manuel et dรฉveloppeurs.
Le Cucumber Le cadre BDD รฉgalement aide les clients ร comprendre le code de l'application Parce qu'il utilise le langage Gherkin, qui est en texte clair. Toute personne au sein de l'organisation peut ainsi comprendre le comportement du logiciel. La syntaxe Gherkin est en anglais simple et lisible, ce qui rend la spรฉcification accessible aux lecteurs non techniques.
Conditions prรฉalables ร l'utilisation Cucumber au Selenium
Avant de commencer le Cucumber-Selenium Pour l'intรฉgration, vous aurez besoin des รฉlรฉments suivants :
Selenium fichiers jar :
- Selenium-serveur-autonome
Vous pouvez les tรฉlรฉcharger sur https://www.selenium.dev/downloads/.
Fichiers Jar pour Cucumber:
- Cucumber-coeur
- Cucumber-html
- Cobertura couverture de code
- Cucumber-Java
- Cucumber-juin
- Cucumber-jvm-deps
- Cucumberrapporter
- Noyau de hamcrest
- Cornichon
- JUnit
Vous pouvez les tรฉlรฉcharger sur https://mvnrepository.com/search?q=CucumberVous devrez rechercher chaque fichier jar et les tรฉlรฉcharger un par un.
Par exemple, voici comment tรฉlรฉcharger l'un des fichiers jar, le ยซCucumber-bibliothรจque ยซ core ยป.
Cliquez sur le lien de tรฉlรฉchargement ci-dessus. Il vous redirigera vers le site du dรฉpรดt Maven. Recherchez ensuite le fichier JAR spรฉcifique (dans ce cas, ยซ Cucumber ยซ Noyau ยป comme indiquรฉ dans la capture dโรฉcran ci-dessous :
Sur la page suivante, cliquez sur la version 1.2.2 :
Sur l'รฉcran suivant, cliquez sur Tรฉlรฉcharger pour rรฉcupรฉrer le Cucumber Fichier jar principal :
ร noter: Par souci de commoditรฉ, nous avons regroupรฉ les fichiers jar Maven nรฉcessaires. iciCes fichiers JAR peuvent devenir obsolรจtes et incompatibles avec le temps ; nous vous recommandons donc de les tรฉlรฉcharger vous-mรชme en utilisant la mรฉthode dรฉcrite ci-dessus.
Tests d'automatisation utilisant Cucumber au Selenium
Voyons ensemble comment l'utiliser Cucumber au Selenium รtape par รฉtape. Nous allons ici aborder trois scรฉnarios :
- Scรฉnario 1 : imprimer du texte dans la console.
- Scรฉnario 2 : Saisissez vos identifiants de connexion et rรฉinitialisez la valeur.
- Scรฉnario 3 : Saisir les identifiants de connexion sur Guru99 et rรฉinitialiser la valeur โ rรฉpรฉtรฉ pour 3 ensembles de donnรฉes.
Scรฉnario 1 : Afficher du texte dans la console
Dans ce scรฉnario, nous affichons simplement du texte dans la console en utilisant Cucumber.
รtape 1) Crรฉer un projet dans Eclipse.
Crรฉer un Java projet portant le nom "CucumberAvecSelenium ยป comme indiquรฉ dans la capture d'รฉcran ci-dessous.
รtape 2) Ajoutez les fichiers jar au projet.
Cliquez avec le bouton droit sur le projet > Propriรฉtรฉs > Java Chemin de compilation. Ajoutez toutes les bibliothรจques que vous avez tรฉlรฉchargรฉes prรฉcรฉdemment.
รtape 3) Crรฉez un fichier de fonctionnalitรฉs.
Pour crรฉer un fichier de fonctionnalitรฉs, commencez par crรฉer un dossier ยซ Fonctionnalitรฉs ยป, comme indiquรฉ dans la capture dโรฉcran ci-dessous.
Saisissez le nom du dossier ยซ Fonctionnalitรฉs ยป et cliquez sur Terminer.
Crรฉez maintenant un fichier de fonctionnalitรฉs dans le dossier Features nommรฉ MyTest.featureLe processus est similaire ร la crรฉation d'un dossier.
ร noter: Vous devrez peut-รชtre installer le Cucumber Eclipse Installez d'abord le plugin. Allez dans Aide โ Installer un nouveau logiciel, puis collez le lien. http://cucumber.github.io/cucumber-eclipse/update-site/et installez-le.
รtape 4) Rรฉdigez les scรฉnarios.
Les lignes ci-dessous sont รฉcrites en MyTest.feature en utilisant le langage Gherkin :
Feature: Reset functionality on login page of Application
Scenario: Verification of Reset button
Given Open the Firefox and launch the application
When Enter the Username and Password
Then Reset the credential
Code Explication
Ligne 1) Dรฉfinit les fonctionnalitรฉs mรฉtier.
Ligne 2) Dรฉfinit un scรฉnario ร tester.
Ligne 3) Dรฉfinit la condition prรฉalable (รtant donnรฉ).
Ligne 4) Dรฉfinit l'action ร effectuer (Quand).
Ligne 5) Dรฉfinit le rรฉsultat ou l'issue attendue (Alors).
รtape 5) Ecrire le Selenium Script TestRunner pour le Cucumber Conception du cadre.
Crรฉer un TestRunner paquet puis un Runner.java fichier de classe en dessous.
package TestRunner;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(features = "Features", glue = {"StepDefinition"})
public class Runner
{
}
Au dessus Cucumber Java Par exemple, nous exรฉcutons le test de concombre en utilisant les annotations suivantes :
@Courir avec() raconte JUnit ร propos de la classe d'exรฉcution des tests qui lance nos tests.
@CucumberOptions() dรฉfinit les propriรฉtรฉs de test telles que le chemin d'accรจs au fichier de fonctionnalitรฉs et le package de liaison de dรฉfinition d'รฉtape.
Capture d'รฉcran du fichier TestRunner :
รtape 6) Crรฉez le script de dรฉfinition d'รฉtape.
Crรฉez maintenant un Dรฉfinition de l'รฉtape paquet puis un Steps.java Le fichier script se trouve en dessous. Dans Steps.java, nous รฉcrivons le Selenium logique correspondant ร chaque รฉtape Gherkin.
package StepDefinition;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class Steps {
@Given("^Open the Firefox and launch the application$")
public void open_the_Firefox_and_launch_the_application() throws Throwable
{
System.out.println("This Step open the Firefox and launch the application.");
}
@When("^Enter the Username and Password$")
public void enter_the_Username_and_Password() throws Throwable
{
System.out.println("This step enter the Username and Password on the login page.");
}
@Then("^Reset the credential$")
public void Reset_the_credential() throws Throwable
{
System.out.println("This step click on the Reset button.");
}
}
La classe s'appelle รtapes et Cucumber Les annotations associent chaque mรฉthode ร une รฉtape du fichier de fonctionnalitรฉs :
@Donnรฉ dรฉfinit la mรฉthode d'ouverture Firefox et lancez l'application.
@Quand dรฉfinit la mรฉthode de saisie du nom d'utilisateur et du mot de passe.
@Alors dรฉfinit la mรฉthode de rรฉinitialisation des identifiants.
Chaque mรฉthode se contente d'afficher un message dans la console.
La capture d'รฉcran ci-dessous montre le script Steps.java et l'arborescence du projet :
ร noter: Une dรฉfinition d'รฉtape est le code que vous souhaitez Cucumber ร exรฉcuter lorsqu'elle correspond ร une รฉtape de fichier de fonctionnalitรฉs.
รtape 7) Exรฉcutez le script.
Exรฉcutez ce script ร partir du fichier TestRunner (Runner.java) comme indiquรฉ ci-dessous.
รtape 8) Analysez le rรฉsultat.
Lors de l'exรฉcution de Runner.java, Cucumber Affiche dans la console le mรชme texte que celui dรฉfini dans Steps.java.
Scรฉnario 2 : Saisir les identifiants de connexion et rรฉinitialiser la valeur
Ici, nous saisissons les identifiants sur le GuruPage de connexion de dรฉmonstration 99 et rรฉinitialisation de la valeur.
Pour le scรฉnario 2, il suffit de mettre ร jour Steps.javaIci, nous ajoutons le vrai Selenium code. Tout d'abord, assurez-vous que le Selenium Le fichier jar a รฉtรฉ ajoutรฉ au projet.
รtape 1) Mettez ร jour le script Steps.java comme indiquรฉ ci-dessous.
package StepDefinition;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class Steps {
WebDriver driver;
@Given("^Open the Firefox and launch the application$")
public void open_the_Firefox_and_launch_the_application() throws Throwable
{
System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://demo.guru99.com/v4");
}
@When("^Enter the Username and Password$")
public void enter_the_Username_and_Password() throws Throwable
{
driver.findElement(By.name("uid")).sendKeys("username12");
driver.findElement(By.name("password")).sendKeys("password12");
}
@Then("^Reset the credential$")
public void Reset_the_credential() throws Throwable
{
driver.findElement(By.name("btnReset")).click();
}
}
Capture d'รฉcran de ce qui prรฉcรจde Selenium script:
รtape 2) Exรฉcutez le script.
Aprรจs avoir mis ร jour Steps.java, exรฉcutez Runner.java.
รtape 3) Analysez le rรฉsultat. Vous y verrez les รฉlรฉments suivants :
- Navigateur lancรฉ.
- GuruLe site de dรฉmonstration de 99 Bank ouvre ses portes.
- Le nom d'utilisateur et le mot de passe sont saisis sur la page de connexion.
- Le bouton Rรฉinitialiser efface les valeurs.
Scรฉnario 3 : Exรฉcuter le flux de connexion et de rรฉinitialisation avec 3 ensembles de donnรฉes
Ici, nous devons mettre ร jour les deux Steps.java et le fichier de fonctionnalitรฉs permettant de gรฉrer le mรชme flux avec trois ensembles d'identifiants.
รtape 1) Mettez ร jour le fichier de fonctionnalitรฉs comme indiquรฉ ci-dessous.
Nous utilisons les Aperรงu du scรฉnario et Exemples syntaxe donc Cucumber rรฉpรจte le mรชme scรฉnario pour chaque ligne de donnรฉes.
Feature: Reset functionality on login page of Application
Scenario Outline: Verification of reset button with multiple credentials
Given Open the Firefox and launch the application
When Enter the Username <username> and Password <password>
Then Reset the credential
Examples:
| username | password |
| User1 | password1 |
| User2 | password2 |
| User3 | password3 |
รtape 2) Mettez ร jour le script Steps.java.
Nous mettons ici ร jour les signatures des mรฉthodes afin qu'elles acceptent les paramรจtres du tableau des exemples.
package StepDefinition;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class Steps {
WebDriver driver;
@Given("^Open the Firefox and launch the application$")
public void open_the_Firefox_and_launch_the_application() throws Throwable
{
System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("http://demo.guru99.com/v4");
}
@When("^Enter the Username \"(.*)\" and Password \"(.*)\"$")
public void enter_the_Username_and_Password(String username, String password) throws Throwable
{
driver.findElement(By.name("uid")).sendKeys(username);
driver.findElement(By.name("password")).sendKeys(password);
}
@Then("^Reset the credential$")
public void Reset_the_credential() throws Throwable
{
driver.findElement(By.name("btnReset")).click();
}
}
รtape 3) Exรฉcutez le script mis ร jour.
La capture d'รฉcran ci-dessous illustre une exรฉcution rรฉussie et le temps nรฉcessaire pour chaque ensemble de donnรฉes.
รtape 4) Analysez les rรฉsultats. Les รฉtapes suivantes se rรฉpรจtent pour chacun des 3 ensembles de donnรฉes :
- Navigateur lancรฉ.
- GuruLe site de dรฉmonstration de 99 Bank ouvre ses portes.
- Le nom d'utilisateur et le mot de passe sont saisis sur la page de connexion.
- Le bouton Rรฉinitialiser efface les valeurs.
























