Selenium with Cucumber (BDD Framework-zelfstudie)

โšก Slimme samenvatting

Selenium with Cucumber vormt een krachtig Behavior Driven Development (BDD)-framework dat de eenvoudige Gherkin-syntaxis combineert met Selenium WebDriver-automatisering. Deze handleiding legt de vereisten uit, doorloopt drie praktijkvoorbeelden en laat zien hoe feature-bestanden, stapdefinities en een TestRunner-klasse samenwerken om browsertests uit te voeren.

  • ???? Kerndefinitie: Cucumber is een BDD-testtool die het gedrag van applicaties in begrijpelijke taal beschrijft met behulp van Gherkin, en Selenium stuurt de onderliggende browseracties aan.
  • ๐Ÿค Belanghebbendenbrug: Cucumber verbindt bedrijfsanalisten, handmatige testers, automatiseringsingenieurs en ontwikkelaars via een gedeelde, leesbare testspecificatie.
  • ???? Benodigde potten: Selenium zelfstandig, Cucumber-kern, Cucumber-Java, Cucumber-junit, Gherkin, JUnit, en Hamcrest-core vormen de minimale set afhankelijkheden.
  • ๐Ÿงฑ Drie projectbestanden: Een .feature-bestand met scenario's, een Steps.java-klasse voor stapdefinities en een Runner.java TestRunner met @CucumberOpties lijm.
  • ๐Ÿ” Datagestuurde tests: Gebruik de tabellen Scenario Outline en Examples om dezelfde workflow met meerdere sets inloggegevens in รฉรฉn keer uit te voeren.

Selenium with Cucumber (BDD Framework-zelfstudie)

In deze tutorial leert u hoe u kunt integreren Cucumber with Selenium WebDriver wordt gebruikt om een โ€‹โ€‹Behavior Driven Development (BDD)-framework te bouwen dat leesbaar, onderhoudbaar en datagestuurd is.

Wat is Cucumber?

Cucumber is een testtool die Behavior Driven Development (BDD) ondersteunt. Het beschrijft het gedrag van een applicatie in eenvoudige Engelse tekst met behulp van de Gherkin-taal, waardoor niet-ontwikkelaars kunnen bijdragen aan testspecificaties zonder een programmeertaal te hoeven leren. Lees meer in onze Cucumber zelfstudie.

Wat is Selenium?

Selenium is een automatiseringstool die gebruikt wordt voor Functioneel testen van webgebaseerde applicaties. Selenium ondersteunt meerdere programmeertalen, waaronder Java, Robijn, Pythonen C#, waardoor het een natuurlijke keuze is voor teams met uiteenlopende technische achtergronden. Lees meer in onze Selenium zelfstudie.

Waarom gebruiken Cucumber with Selenium?

Cucumber en Selenium zijn twee van de meest gebruikte testtechnologieรซn. De meeste organisaties gebruiken deze al. Selenium voor functionele testen en wil gelaagdheid toepassen Cucumber bovenaan omdat Cucumber Het maakt het applicatieproces gemakkelijk leesbaar en begrijpelijk..

Cucumber is gebaseerd op het Behavior Driven Development-raamwerk dat fungeert als een brug tussen de volgende rollen:

  1. Software Engineer en Business Analist.
  2. Handmatige tester en automatiseringstester.
  3. Handmatige testers en ontwikkelaars.

De Cucumber BDD-framework ook helpt klanten de applicatiecode te begrijpen Omdat het gebruikmaakt van de Gherkin-taal, die in platte tekst is geschreven. Iedereen binnen de organisatie kan het gedrag van de software volgen. De Gherkin-syntaxis is in eenvoudig leesbaar Engels, waardoor de specificatie toegankelijk blijft voor niet-technische lezers.

Cucumber with Selenium Overzicht van het BDD-framework

Vereisten voor gebruik Cucumber with Selenium

Voordat we beginnen met de Cucumber-Selenium Voor de integratie heb je de volgende items nodig:

Selenium jar-bestanden:

  • Selenium-server-standalone

Je kunt ze downloaden via https://www.selenium.dev/downloads/.

Selenium Downloadpagina voor JAR-bestanden

JAR-bestanden voor Cucumber:

  • Cucumber-core
  • Cucumber-html
  • Cobertura code dekking
  • Cucumber-Java
  • Cucumber-junit
  • Cucumber-jvm-deps
  • Cucumber-rapportage
  • Hamcrest-kern
  • augurkje
  • JUnit

Je kunt ze downloaden via https://mvnrepository.com/search?q=CucumberJe moet elk jar-bestand opzoeken en รฉรฉn voor รฉรฉn downloaden.

Hier is bijvoorbeeld hoe je een van de jar-bestanden kunt downloaden, namelijk de "Cucumber-coreโ€ bibliotheek.

Klik op de downloadlink hierboven. Je wordt doorgestuurd naar de Maven Repository-website. Zoek nu naar het specifieke jar-bestand (in dit geval "Cucumber Coreโ€) zoals weergegeven in de onderstaande schermafbeelding:

Zoeken naar Cucumber Kern-JAR in Maven-repository

Klik op de volgende pagina op versie 1.2.2:

Selecteren Cucumber Core-versie 1.2.2 in Maven

Klik op het volgende scherm op Downloaden om het bestand te downloaden. Cucumber Kern JAR-bestand:

Download de Cucumber Kern JAR-bestand

Let op: Voor uw gemak hebben we de benodigde Maven JAR-bestanden gebundeld. hierDeze JAR-bestanden kunnen na verloop van tijd verouderd en incompatibel raken. Daarom raden we aan ze zelf te downloaden via de hierboven beschreven methode.

Automatisering testen met behulp van Cucumber with Selenium

Laten we eens bekijken hoe je het kunt gebruiken. Cucumber with Selenium Stap voor stap. We bespreken hier drie scenario's:

  • Scenario 1: Tekst afdrukken in de console.
  • Scenario 2: Voer de inloggegevens in en reset de waarde.
  • Scenario 3: Voer inloggegevens in op Guru99 en de waarde opnieuw instellen โ€” dit werd herhaald voor 3 sets gegevens.

Scenario 1: Tekst afdrukken in de console

In dit scenario printen we eenvoudigweg tekst in de console met behulp van Cucumber.

Stap 1) Maak een project aan in Eclipse.

Maak een Java project met de naam "CucumberMetSelenium" zoals getoond in de onderstaande screenshot.

creรซren CucumberMetSelenium Java project in Eclipse

Java configuratie van de projectnaam in Eclipse

Stap 2) Voeg de JAR-bestanden toe aan het project.

Klik met de rechtermuisknop op het project > Eigenschappen > Java Bouwpad. Voeg alle eerder gedownloade bibliotheken toe.

Toevoegen Cucumber en Selenium jar-bestanden naar Java Pad bouwen

Stap 3) Maak een featurebestand aan.

Om een โ€‹โ€‹featurebestand te maken, moet u eerst een map genaamd 'Features' aanmaken, zoals weergegeven in de onderstaande schermafbeelding.

Maak een map 'Functies' aan in Eclipse project

Voer de mapnaam "Functies" in en klik op Voltooien.

Configureer de mapnaam voor functies in Eclipse

De map 'Functies' is zichtbaar in de projectverkenner.

Maak nu een feature-bestand aan in de map Features met de naam MijnTest.functieHet proces is vergelijkbaar met het aanmaken van een map.

Maak het bestand MyTest.feature aan in de map Features.

Let op: Mogelijk moet u de Cucumber Eclipse Installeer eerst de plugin. Ga naar Help โ†’ Nieuwe software installeren en plak de link. http://cucumber.github.io/cucumber-eclipse/update-site/en installeer het.

Stap 4) Schrijf de scenario's op.

De onderstaande regels zijn geschreven in MijnTest.functie met behulp van de Gherkin-taal:

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 Uitleg

Lijn 1) Definieert de bedrijfsfunctionaliteit.

Lijn 2) Definieert een testscenario.

Lijn 3) Definieert de voorwaarde (Gegeven).

Lijn 4) Definieert de uit te voeren actie (Wanneer).

Lijn 5) Definieert de verwachte uitkomst of het verwachte resultaat (Dan).

Stap 5) Schrijf de Selenium TestRunner-script voor de Cucumber frameworkontwerp.

Maak een TestRunner pakket en vervolgens een Runner.java klassebestand eronder.

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
{

}

In bovenstaande Cucumber Java bijvoorbeeld voeren we de uit komkommer proef met behulp van de volgende annotaties:

@Rennen met() vertelt JUnit Over de testrunnerklasse die onze tests uitvoert.

@CucumberOpties() Hiermee worden testeigenschappen ingesteld, zoals het pad naar het featurebestand en het pakket voor de stapdefinitie.

Schermafbeelding van het TestRunner-bestand:

Runner.java TestRunner-script voor Cucumber

Stap 6) Maak het stapdefinitiescript aan.

Maak nu een StapDefinitie pakket en vervolgens een Steps.java scriptbestand eronder. In Steps.java schrijven we het volgende. Selenium logica die overeenkomt met elke Gherkin-stap.

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.");
    }
}

De klasse heet Stappenen Cucumber De annotaties koppelen elke methode aan een stap in het featurebestand:

@Gegeven definieert de methode om te openen Firefox en start de applicatie.

@Wanneer Definieert de methode voor het invoeren van de gebruikersnaam en het wachtwoord.

@Dan Definieert de methode om de inloggegevens te resetten.

Elke methode print simpelweg een bericht naar de console.

De onderstaande schermafbeelding toont het Steps.java-script en de projectstructuur:

Steps.java script en projectstructuur in Eclipse

Let op: Een stapdefinitie is de code die je wilt Cucumber Uit te voeren wanneer dit overeenkomt met een stap in een feature-bestand.

Stap 7) Voer het script uit.

Voer dit script uit vanuit het bestand TestRunner (Runner.java) zoals hieronder weergegeven.

Voer Runner.java uit om te starten Cucumber proef

Stap 8) Analyseer de uitvoer.

Bij het uitvoeren van Runner.java, Cucumber print dezelfde tekst als gedefinieerd in Steps.java naar de console.

Console-uitvoer van Cucumber testuitvoering

Scenario 2: Voer inloggegevens in en reset de waarde

Hier voeren we de inloggegevens in op de GuruGa naar de demo-inlogpagina (pagina 99) en reset de waarde.

Voor scenario 2 hoeven we alleen maar een update uit te voeren. Steps.javaHier voegen we het echte toe. Selenium code. Zorg er eerst voor dat de Selenium Het JAR-bestand wordt aan het project toegevoegd.

Bevestigen Selenium Het JAR-bestand bevindt zich in het classpath van het project.

Stap 1) Werk het Steps.java-script bij zoals hieronder weergegeven.

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

Screenshot van het bovenstaande Selenium script:

Scenario 2 Steps.java met Selenium logica

Stap 2) Voer het script uit.

Nadat je Steps.java hebt bijgewerkt, voer je Runner.java uit.

Stap 3) Analyseer de uitvoer. In de uitvoer ziet u het volgende:

  • Browser gelanceerd.
  • GuruDemosite van 99 Bank geopend.
  • Gebruikersnaam en wachtwoord worden ingevoerd op de inlogpagina.
  • Met de resetknop worden de waarden gewist.

Scenario 2 animatie die laat zien Cucumber Selenium proefdraaien

Scenario 3: Voer de inlog- en resetprocedure uit met 3 sets gegevens.

Hier moeten we beide bijwerken. Steps.java en het functiebestand om dezelfde workflow aan te sturen met drie sets inloggegevens.

Stap 1) Werk het functiebestand bij zoals hieronder weergegeven.

We maken gebruik van de Scenariooverzicht en Voorbeelden syntaxis dus Cucumber Herhaalt hetzelfde scenario voor elke rij met gegevens.

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 |

Functiebestand met scenario-overzicht en voorbeeldtabel

Stap 2) Werk het Steps.java-script bij.

Hier werken we de methodesignaturen bij zodat ze parameters uit de tabel 'Voorbeelden' accepteren.

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

Steps.java is bijgewerkt met geparameteriseerde inloggegevens.

Stap 3) Voer het bijgewerkte script uit.

Onderstaande afbeelding toont een succesvolle uitvoering en de tijd die elke dataset in beslag nam.

Succesvolle uitvoering van scenario 3 met drie datasets.

Stap 4) Analyseer de uitvoer. De volgende stappen worden herhaald voor elk van de 3 datasets:

  • Browser gelanceerd.
  • GuruDemosite van 99 Bank geopend.
  • Gebruikersnaam en wachtwoord worden ingevoerd op de inlogpagina.
  • Met de resetknop worden de waarden gewist.

Scenario 3 animatie met geparameteriseerde weergave Cucumber proefdraaien

Veelgestelde vragen

Cucumber is een BDD-framework dat scenario's uitvoert die in Gherkin zijn geschreven. Selenium is een bibliotheek voor browserautomatisering die webpagina's aanstuurt. Cucumber communiceert niet rechtstreeks met browsers โ€” het roept aan Selenium stapdefinities om de daadwerkelijke UI-acties uit te voeren.

Cucumber Feature-bestanden maken gebruik van Gherkin, een domeinspecifieke taal in begrijpelijke taal die scenario's organiseert met trefwoorden zoals Feature, Scenario, Given, When, Then, And, But, Scenario Outline en Examples. Gherkin is leesbaar voor zowel technische als niet-technische belanghebbenden.

Gebruik het trefwoord Scenario Outline met een tabel met voorbeelden. Cucumber voert hetzelfde scenario รฉรฉn keer per rij uit, waarbij plaatsaanduidingen zoals worden vervangen. En met de waarden uit elke rij. Dit is het standaard datagestuurde patroon in Cucumber.

AI genereert Gherkin-scenario's op basis van gebruikersverhalen, adviseert stapdefinities en herstelt defecte locators in SeleniumEn het suggereert voorbeeldgegevens. AI-assistenten signaleren ook dubbele scenario's, zwakke beweringen en verouderde tests, waardoor de BDD-suite onderhoudbaar blijft naarmate de applicatie verandert.

Ja. AI-codeerassistenten lezen Gherkin-featurebestanden en genereren overeenkomende resultaten. Java of Kotlin-stapdefinities, waaronder Selenium WebDriver-aanroepen, locatorstrategieรซn en parameterbinding. Ontwikkelaars verfijnen vervolgens de gegenereerde code, wat de hoeveelheid boilerplate-code tijdens het opstarten aanzienlijk vermindert.ping nieuwe BDD-suites.

Vat dit bericht samen met: