Selenium med Cucumber (BDD Framework Tutorial)

โšก Smart sammanfattning

Selenium med Cucumber bildar ett kraftfullt ramverk fรถr beteendedriven utveckling (BDD) som kombinerar vanlig engelsk Gherkin-syntax med Selenium WebDriver-automatisering. Den hรคr handledningen fรถrklarar fรถrutsรคttningarna, gรฅr igenom tre praktiska scenarier och visar hur funktionsfiler, stegdefinitioner och en TestRunner-klass integreras fรถr att kรถra webblรคsartester.

  • ๐Ÿฅ’ Kรคrndefinition: Cucumber รคr ett BDD-testverktyg som beskriver applikationsbeteende i enkel engelska med hjรคlp av Gherkin, och Selenium driver webblรคsarens รฅtgรคrder nedanfรถr.
  • ๐Ÿค Intressentbrygga: Cucumber kopplar samman affรคrsanalytiker, manuella testare, automationsingenjรถrer och utvecklare genom en delad, lรคsbar testspecifikation.
  • ๐Ÿ“ฆ Nรถdvรคndiga burkar: Selenium fristรฅende, Cucumber-kรคrna, Cucumber-java, Cucumber-junit, gurka, JUnit, och Hamcrest-core bildar den minsta beroendemรคngden.
  • ๐Ÿงฑ Tre projektfiler: En .feature-fil med scenarier, en Steps.java stegdefinitionsklass och en Runner.java TestRunner med @CucumberAlternativ lim.
  • ๐Ÿ” Datadrivna tester: Anvรคnd tabellerna Scenario Outline plus Example fรถr att kรถra samma flรถde mot flera uppsรคttningar autentiseringsuppgifter i en kรถrning.

Selenium med Cucumber (BDD Framework Tutorial)

I den hรคr handledningen kommer du att lรคra dig hur du integrerar Cucumber med Selenium WebDriver fรถr att bygga ett ramverk fรถr beteendedriven utveckling (BDD) som รคr lรคsbart, underhรฅllbart och datadrivet.

Vad รคr Cucumber?

Cucumber รคr ett testverktyg som stรถder beteendedriven utveckling (BDD). Det beskriver ett programs beteende i enkel engelsk text med hjรคlp av sprรฅket Gherkin, vilket lรฅter icke-utvecklare bidra till testspecifikationer utan att lรคra sig ett programmeringssprรฅk. Lรคs mer i vรฅr Cucumber handledning.

Vad รคr Selenium?

Selenium รคr ett automatiseringsverktyg som anvรคnds fรถr funktions~~POS=TRUNC av webbaserade applikationer. Selenium stรถder flera programmeringssprรฅk inklusive JavaRubin, Pythonoch C#, vilket gรถr det till en naturlig lรถsning fรถr team med blandad teknisk bakgrund. Lรคs mer i vรฅr Selenium handledning.

Varfรถr anvรคnda Cucumber med Selenium?

Cucumber och Selenium รคr tvรฅ av de mest anvรคnda testteknikerna. De flesta organisationer anvรคnder redan Selenium fรถr funktionstestning och vill lagerlรคgga Cucumber pรฅ toppen eftersom Cucumber gรถr det enkelt att lรคsa och fรถrstรฅ applikationsflรถdet.

Cucumber รคr baserat pรฅ ramverket Behavior Driven Development som fungerar som en bro mellan fรถljande roller:

  1. Mjukvaruingenjรถr och affรคrsanalytiker.
  2. Manuell testare och automationstestare.
  3. Manuell testare och utvecklare.

Ocuco-landskapet Cucumber BDD ram ocksรฅ hjรคlper klienter att fรถrstรฅ applikationskoden eftersom den anvรคnder Gherkin-sprรฅket, som รคr i klartext. Vem som helst i organisationen kan fรถlja programvarans beteende. Gherkin-syntaxen รคr pรฅ enkel lรคsbar engelska, vilket gรถr specifikationen tillgรคnglig fรถr icke-tekniska lรคsare.

Cucumber med Selenium ร–versikt รถver BDD-ramverket

Fรถrutsรคttningar fรถr anvรคndning Cucumber med Selenium

Innan vi bรถrjar Cucumber-Selenium integrationen behรถver du fรถljande saker:

Selenium jar filer:

  • Selenium-server-fristรฅende

Du kan ladda ner dem pรฅ https://www.selenium.dev/downloads/.

Selenium nedladdningssida fรถr jar-filer

Jar-filer fรถr Cucumber:

  • Cucumber-kรคrna
  • Cucumber-html
  • Cobertura kod tรคckning
  • Cucumber-java
  • Cucumber-junit
  • Cucumber-jvm-deps
  • Cucumber-rapportering
  • Hamcrest-kรคrna
  • Gurka
  • JUnit

Du kan ladda ner dem pรฅ https://mvnrepository.com/search?q=CucumberDu mรฅste sรถka efter varje burk och ladda ner dem en efter en.

Till exempel, sรฅ hรคr laddar du ner en av jar-filerna, "Cucumber-coreโ€-biblioteket.

Klicka pรฅ nedladdningslรคnken ovan. Den omdirigerar till Maven Repository-webbplatsen. Sรถk nu efter den specifika burken (i det hรคr fallet "Cucumber Kรคrnaโ€) som visas pรฅ skรคrmdumpen nedan:

Letar du efter Cucumber Kรคrnburk i Maven Repository

Pรฅ nรคsta sida klickar du pรฅ version 1.2.2:

Vรคlja Cucumber Kรคrnversion 1.2.2 i Maven

Pรฅ nรคsta skรคrm klickar du pรฅ Ladda ner fรถr att hรคmta Cucumber Kรคrn-jar-fil:

ladda ner Cucumber Core jar-fil

Obs: Fรถr enkelhetens skull har vi samlat de nรถdvรคndiga Maven jar-filerna. hรคr.Dessa burkar kan bli fรถrรฅldrade och inkompatibla med tiden, sรฅ vi rekommenderar att du laddar ner dem sjรคlv med hjรคlp av metoden som beskrivs ovan.

Automationstestning med hjรคlp av Cucumber med Selenium

Lรฅt oss gรฅ igenom hur man anvรคnder Cucumber med Selenium steg fรถr steg. Hรคr kommer vi att gรฅ igenom tre scenarier:

  • Scenario 1: Skriv ut text i konsolen.
  • Scenario 2: Ange inloggningsuppgifter och รฅterstรคll vรคrdet.
  • Scenario 3: Ange inloggningsuppgifter pรฅ Guru99 och รฅterstรคll vรคrdet โ€” upprepas fรถr 3 uppsรคttningar data.

Scenario 1: Skriv ut text i konsolen

I det hรคr scenariot skriver vi helt enkelt ut text i konsolen med hjรคlp av Cucumber.

Steg 1) Skapa ett projekt i Eclipse.

Skapa en Java projekt med namnet "CucumberMedSelenium" som visas i skรคrmdumpen nedan.

Skapa CucumberMedSelenium Java projekt i Eclipse

Java projektnamnkonfiguration i Eclipse

Steg 2) Lรคgg till jar-filerna i projektet.

Hรถgerklicka pรฅ projektet > Egenskaper > Java Bygg sรถkvรคg. Lรคgg till alla bibliotek du laddade ner tidigare.

Lรคgg till Cucumber och Selenium jar-filer till Java Bygg vรคg

Steg 3) Skapa en funktionsfil.

Fรถr att skapa en funktionsfil, skapa fรถrst en funktionsmapp som visas pรฅ skรคrmbilden nedan.

Skapa funktionsmapp i Eclipse projektet

Ange mappnamnet "Funktioner" och klicka pรฅ Slutfรถr.

Namn pรฅ mappen Konfigurera funktioner i Eclipse

Funktionsmappen รคr synlig i projektutforskaren

Skapa nu en funktionsfil i mappen Funktioner med namnet MittTest.funktionProcessen liknar den nรคr man skapar en mapp.

Skapa MyTest.feature-filen i Features-mappen

Obs: Du kan behรถva installera Cucumber Eclipse Plugin fรถrst. Gรฅ till Hjรคlp โ†’ Installera ny programvara, klistra in lรคnken http://cucumber.github.io/cucumber-eclipse/update-site/och installera den.

Steg 4) Skriv scenarierna.

Raderna nedan รคr skrivna i MittTest.funktion med hjรคlp av Gherkin-sprรฅket:

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 Fรถrklaring

Rad 1) Definierar affรคrsfunktionaliteten.

Rad 2) Definierar ett scenario att testa.

Rad 3) Definierar fรถrutsรคttningen (given).

Rad 4) Definierar vilken รฅtgรคrd som ska utfรถras (Nรคr).

Rad 5) Definierar det fรถrvรคntade resultatet eller resultatet (Sedan).

Steg 5) Skriv Selenium TestRunner-skript fรถr Cucumber ramverksdesign.

Skapa en TestRunner paket och sedan ett Runner.java klassfilen under den.

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
{

}

I ovanstรฅende Cucumber Java exempel, vi kรถr gurka test med hjรคlp av fรถljande anteckningar:

@Spring med() berรคttar JUnit om testlรถparklassen som bรถrjar kรถra vรฅra tester.

@CucumberAlternativ() anger testegenskaper som sรถkvรคgen till funktionsfilen och det stegdefinitionsbaserade limpaketet.

Skรคrmdump av TestRunner-filen:

Runner.java TestRunner-skript fรถr Cucumber

Steg 6) Skapa skriptet fรถr stegdefinitionen.

Skapa nu en StegDefinition paket och sedan ett Steps.java skriptfilen under den. Inuti Steps.java skriver vi Selenium logik som mappas till varje Gherkin-steg.

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

Klassen รคr namngiven Stegoch Cucumber annoteringar mappar varje metod till ett steg i funktionsfilen:

@Given definierar metoden fรถr att รถppna Firefox och starta applikationen.

@Nรคr definierar metoden fรถr att ange anvรคndarnamn och lรถsenord.

@Sedan definierar metoden fรถr att รฅterstรคlla autentiseringsuppgifterna.

Varje metod skriver helt enkelt ut ett meddelande till konsolen.

Skรคrmdumpen nedan visar Steps.java-skriptet och projekttrรคdet:

Steps.java-skript och projekttrรคd i Eclipse

Obs: En stegdefinition รคr den kod du vill ha Cucumber att kรถra nรคr den matchar ett steg i en funktionsfil.

Steg 7) Kรถr skriptet.

Kรถr det hรคr skriptet frรฅn TestRunner-filen (Runner.java) enligt nedan.

Kรถr Runner.java fรถr att kรถra Cucumber test

Steg 8) Analysera resultatet.

Vid kรถrning av Runner.java, Cucumber skriver ut samma text som definierats i Steps.java till konsolen.

Konsolutgรฅng frรฅn Cucumber testkรถrning

Scenario 2: Ange inloggningsuppgifter och รฅterstรคll vรคrdet

Hรคr anger vi inloggningsuppgifter pรฅ Guru99 demo-inloggningssida och รฅterstรคll vรคrdet.

Fรถr scenario 2 behรถver vi bara uppdatera Steps.javaHรคr lรคgger vi till den verkliga Selenium kod. Se fรถrst till att Selenium jar-filen lรคggs till i projektet.

Bekrรคfta Selenium jar-filen finns pรฅ projektets klassvรคg

Steg 1) Uppdatera Steps.java-skriptet enligt nedan.

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

Skรคrmdump av ovanstรฅende Selenium manus:

Scenario 2 Steps.java med Selenium Logiken

Steg 2) Kรถr skriptet.

Kรถr Runner.java efter att du har uppdaterat Steps.java.

Steg 3) Analysera utdata. I utdata ser du fรถljande:

  • Webblรคsaren har startats.
  • Guru99 banks demosida รถppnas.
  • Anvรคndarnamn och lรถsenord anges pรฅ inloggningssidan.
  • ร…terstรคllningsknappen rensar vรคrdena.

Animering av scenario 2 som visas Cucumber Selenium provkรถrning

Scenario 3: Kรถr inloggnings- och รฅterstรคllningsflรถdet med 3 datamรคngder

Hรคr behรถver vi uppdatera bรฅda Steps.java och funktionsfilen fรถr att driva samma flรถde med tre uppsรคttningar autentiseringsuppgifter.

Steg 1) Uppdatera funktionsfilen enligt nedan.

Vi anvรคnder Scenario รถversikt och Exempel syntax sรฅ Cucumber loopar samma scenario รถver varje datarad.

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 |

Funktionsfil med scenarioรถversikt och exempeltabell

Steg 2) Uppdatera Steps.java-skriptet.

Hรคr uppdaterar vi metodsignaturerna sรฅ att de accepterar parametrar frรฅn tabellen Exempel.

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

Uppdaterade Steps.java med parametriserade inloggningsuppgifter

Steg 3) Kรถr det uppdaterade skriptet.

Skรคrmen nedan visar en lyckad kรถrning och den tid det tar fรถr varje datamรคngd.

Lyckad genomfรถrande av scenario 3 med tre datamรคngder

Steg 4) Analysera resultatet. Fรถljande steg upprepas fรถr var och en av de tre datamรคngderna:

  • Webblรคsaren har startats.
  • Guru99 banks demosida รถppnas.
  • Anvรคndarnamn och lรถsenord anges pรฅ inloggningssidan.
  • ร…terstรคllningsknappen rensar vรคrdena.

Scenario 3-animering som visar parametriserade Cucumber provkรถrning

Vanliga frรฅgor

Cucumber รคr ett BDD-ramverk som kรถr scenarier skrivna i Gherkin. Selenium รคr ett webblรคsarautomationsbibliotek som driver webbsidor. Cucumber interagerar inte direkt med webblรคsare โ€” den anropar Selenium stegdefinitioner fรถr att utfรถra de faktiska UI-รฅtgรคrderna.

Cucumber Feature-filer anvรคnder Gherkin, ett domรคnspecifikt sprรฅk pรฅ vanlig engelska som organiserar scenarier med nyckelord som Feature, Scenario, Givet, When, Then, And, But, Scenario Outline och Examples. Gherkin รคr lรคsbart fรถr bรฅde tekniska och icke-tekniska intressenter.

Anvรคnd nyckelordet Scenario Outline med en exempeltabell. Cucumber kรถr samma scenario en gรฅng per rad och ersรคtter platshรฅllare som och med vรคrdena frรฅn varje rad. Detta รคr det standardiserade datadrivna mรถnstret i Cucumber.

AI genererar Gherkin-scenarier frรฅn anvรคndarberรคttelser, rekommenderar stegdefinitioner, reparerar trasiga positionerare i Selenium, och fรถreslรฅr exempeldata. AI-assistenter flaggar รคven dubbletter av scenarier, svaga pรฅstรฅenden och inaktuella tester, vilket gรถr att BDD-sviten kan underhรฅllas nรคr applikationen รคndras.

Ja. AI-kodningsassistenter lรคser Gherkin-funktionsfiler och genererar matchning. Java eller Kotlin-stegdefinitioner, inklusive Selenium WebDriver-anrop, lokaliseringsstrategier och parameterbindning. Utvecklare fรถrfinar sedan den genererade koden, vilket dramatiskt minskar standardkraven vid bootstrap.ping nya BDD-sviter.

Sammanfatta detta inlรคgg med: