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.

  • ???? Dรฉfinition principale : Cucumber est un outil de test BDD qui dรฉcrit le comportement des applications en langage clair ร  l'aide de Gherkin, et Selenium pilote les actions du navigateur sous-jacentes.
  • ๐Ÿค Pont des parties prenantes : Cucumber relie les analystes commerciaux, les testeurs manuels, les ingรฉnieurs en automatisation et les dรฉveloppeurs grรขce ร  une spรฉcification de test partagรฉe et lisible.
  • ๐Ÿ“ฆ Bocaux requis : Selenium autonome, Cucumber-cล“ur, Cucumber-Java, Cucumber-junit, Gherkin, JUnit, et Hamcrest-core forment l'ensemble de dรฉpendances minimal.
  • ๐Ÿงฑ Trois fichiers de projet : Un fichier .feature contenant des scรฉnarios, une classe de dรฉfinition d'รฉtape Steps.java et un TestRunner Runner.java avec @CucumberColle en option.
  • (I.e. Tests basรฉs sur les donnรฉes : Utilisez les tableaux ยซ Plan de scรฉnario ยป et ยซ Exemples ยป pour exรฉcuter le mรชme flux sur plusieurs ensembles d'identifiants en une seule exรฉcution.

Selenium au Cucumber (Tutoriel sur le framework BDD)

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 :

  1. Ingรฉnieur logiciel et analyste commercial.
  2. Testeur manuel et testeur d'automatisation.
  3. 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.

Cucumber au Selenium Aperรงu du cadre BDD

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/.

Selenium page de tรฉlรฉchargement des fichiers jar

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 :

Chercher Cucumber Fichier JAR principal dans le dรฉpรดt Maven

Sur la page suivante, cliquez sur la version 1.2.2 :

Sรฉlectionner Cucumber Version principale 1.2.2 dans Maven

Sur l'รฉcran suivant, cliquez sur Tรฉlรฉcharger pour rรฉcupรฉrer le Cucumber Fichier jar principal :

Tรฉlรฉchargez 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.

Crรฉer CucumberAvecSelenium Java projet en Eclipse

Java configuration du nom du projet dans Eclipse

ร‰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.

Ajouter Cucumber et Selenium fichiers jar ร  Java Chemin de construction

ร‰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.

Crรฉer un dossier Fonctionnalitรฉs dans Eclipse Projet

Saisissez le nom du dossier ยซ Fonctionnalitรฉs ยป et cliquez sur Terminer.

Configurer le nom du dossier des fonctionnalitรฉs dans Eclipse

Le dossier ยซ Fonctionnalitรฉs ยป est visible dans l'explorateur de projets.

Crรฉez maintenant un fichier de fonctionnalitรฉs dans le dossier Features nommรฉ MyTest.featureLe processus est similaire ร  la crรฉation d'un dossier.

Crรฉez le fichier MyTest.feature dans le dossier Features

ร€ 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 :

Script Runner.java TestRunner pour Cucumber

ร‰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 :

Script Steps.java et arborescence du projet dans Eclipse

ร€ 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.

Exรฉcutez Runner.java pour lancer l'exรฉcution. Cucumber tester

ร‰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.

Sortie de la console depuis Cucumber exรฉcution des tests

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.

Confirmer Selenium Le fichier jar se trouve dans le classpath du 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:

Scรฉnario 2 ร‰tapes.java avec Selenium logique

ร‰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.

Animation du scรฉnario 2 montrant Cucumber Selenium essai

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 |

Fichier de fonctionnalitรฉs avec description du scรฉnario et tableau d'exemples

ร‰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();
    }
}

Fichier Steps.java mis ร  jour avec des identifiants paramรฉtrรฉs

ร‰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.

Exรฉcution rรฉussie du scรฉnario 3 avec trois ensembles 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.

Animation du scรฉnario 3 montrant les paramรจtres Cucumber essai

FAQ

Cucumber est un framework BDD qui exรฉcute des scรฉnarios รฉcrits en Gherkin. Selenium est une bibliothรจque d'automatisation de navigateur qui pilote les pages web. Cucumber n'interagit pas directement avec les navigateurs โ€” il appelle Selenium Dรฉfinitions des รฉtapes permettant d'effectuer les actions d'interface utilisateur proprement dites.

Cucumber Les fichiers de fonctionnalitรฉs utilisent Gherkin, un langage spรฉcifique au domaine, rรฉdigรฉ en langage clair, qui organise les scรฉnarios ร  l'aide de mots clรฉs tels que Fonctionnalitรฉ, Scรฉnario, ร‰tant donnรฉ, Quand, Alors, Et, Mais, Plan du scรฉnario et Exemples. Gherkin est accessible aux parties prenantes, qu'elles soient techniques ou non.

Utilisez le mot-clรฉ ยซ Scรฉnario Outline ยป avec un tableau dโ€™exemples. Cucumber exรฉcute le mรชme scรฉnario une fois par ligne, en remplaรงant les espaces rรฉservรฉs tels que et avec les valeurs de chaque ligne. Il s'agit du modรจle standard basรฉ sur les donnรฉes. Cucumber.

L'IA gรฉnรจre des scรฉnarios Gherkin ร  partir de rรฉcits utilisateurs, recommande des dรฉfinitions d'รฉtapes et rรฉpare les localisateurs dรฉfectueux. Seleniumet suggรจre des exemples de donnรฉes. Les assistants IA signalent รฉgalement les scรฉnarios dupliquรฉs, les assertions faibles et les tests obsolรจtes, ce qui permet de maintenir la suite BDD malgrรฉ les รฉvolutions de l'application.

Oui. Les assistants de codage IA lisent les fichiers de fonctionnalitรฉs Gherkin et gรฉnรจrent des correspondances. Java ou les dรฉfinitions d'รฉtapes Kotlin, y compris Selenium Appels WebDriver, stratรฉgies de localisation et liaison de paramรจtres. Les dรฉveloppeurs affinent ensuite le code gรฉnรฉrรฉ, ce qui rรฉduit considรฉrablement le code rรฉpรฉtitif lors de l'amorรงage.ping nouvelles suites BDD.

Rรฉsumez cet article avec :