Selenium med Cucumber (BDD Framework Tutorial)

โšก Smart oppsummering

Selenium med Cucumber danner et kraftig rammeverk for atferdsdrevet utvikling (BDD) som kombinerer vanlig engelsk Gherkin-syntaks med Selenium WebDriver-automatisering. Denne veiledningen forklarer forutsetningene, gรฅr gjennom tre praktiske scenarioer og viser hvordan funksjonsfiler, trinndefinisjoner og en TestRunner-klasse integreres for รฅ utfรธre nettlesertester.

  • ๐Ÿฅ’ Kjernedefinisjon: Cucumber er et BDD-testverktรธy som beskriver applikasjonsoppfรธrsel pรฅ vanlig engelsk ved hjelp av Gherkin, og Selenium driver nettleserhandlingene under.
  • ๐Ÿค Interessentbro: Cucumber kobler sammen forretningsanalytikere, manuelle testere, automatiseringsingeniรธrer og utviklere gjennom en delt, lesbar testspesifikasjon.
  • ๐Ÿ“ฆ Nรธdvendige krukker: Selenium frittstรฅende, Cucumber-kjerne, Cucumber-java, Cucumber-junit, sylteagurk, JUnit, og Hamcrest-kjernen danner minimumsavhengighetssettet.
  • ๐Ÿงฑ Tre prosjektfiler: En .feature-fil med scenarioer, en Steps.java step-definition-klasse og en Runner.java TestRunner med @CucumberAlternativer lim.
  • ๐Ÿ” Datadrevne tester: Bruk tabellene Scenario Outline plus Examples for รฅ kjรธre den samme flyten mot flere sett med legitimasjonsinformasjon i รฉn utfรธrelse.

Selenium med Cucumber (BDD Framework Tutorial)

I denne opplรฆringen lรฆrer du hvordan du integrerer Cucumber med Selenium WebDriver for รฅ bygge et rammeverk for atferdsdrevet utvikling (BDD) som er lesbart, vedlikeholdbart og datadrevet.

Hva er Cucumber?

Cucumber er et testverktรธy som stรธtter Behavior Driven Development (BDD). Det beskriver oppfรธrselen til et program i enkel engelsk tekst ved hjelp av Gherkin-sprรฅket, som lar ikke-utviklere bidra til testspesifikasjoner uten รฅ lรฆre et programmeringssprรฅk. Lรฆr mer i vรฅr Cucumber tutorial.

Hva er Selenium?

Selenium er et automatiseringsverktรธy som brukes til Funksjonell testing av nettbaserte applikasjoner. Selenium stรธtter flere programmeringssprรฅk, inkludert JavaRubin, Pythonog C#, noe som gjรธr det til en naturlig lรธsning for team med blandet teknisk bakgrunn. Lรฆr mer i vรฅr Selenium tutorial.

Hvorfor bruk Cucumber med Selenium?

Cucumber og Selenium er to av de mest brukte testteknologiene. De fleste organisasjoner bruker allerede Selenium for funksjonstesting og รธnsker รฅ legge lag Cucumber pรฅ toppen fordi Cucumber gjรธr det enkelt รฅ lese og forstรฅ applikasjonsflyten.

Cucumber er basert pรฅ rammeverket for atferdsdrevet utvikling som fungerer som en bro mellom fรธlgende roller:

  1. Programvareingeniรธr og forretningsanalytiker.
  2. Manuell tester og automatiseringstester.
  3. Manuell tester og utviklere.

Ocuco Cucumber BDD rammeverk ogsรฅ hjelper klienter med รฅ forstรฅ applikasjonskoden fordi den bruker Gherkin-sprรฅket, som er i ren tekst. Alle i organisasjonen kan fรธlge programvarens oppfรธrsel. Gherkin-syntaksen er pรฅ enkelt lesbart engelsk, noe som gjรธr spesifikasjonen tilgjengelig for ikke-tekniske lesere.

Cucumber med Selenium Oversikt over BDD-rammeverket

Forutsetninger for bruk Cucumber med Selenium

Fรธr vi starter Cucumber-Selenium integrasjon, trenger du fรธlgende:

Selenium jar filer:

  • Selenium-server-frittstรฅende

Du kan laste dem ned pรฅ https://www.selenium.dev/downloads/.

Selenium nedlastingsside for jar-filer

Jar-filer for Cucumber:

  • Cucumber-core
  • Cucumber-html
  • Cobertura kodedekning
  • Cucumber-java
  • Cucumber-junit
  • Cucumber-jvm-deps
  • Cucumber-rapportering
  • Hamcrest-kjerne
  • Gherkin
  • JUnit

Du kan laste dem ned pรฅ https://mvnrepository.com/search?q=CucumberDu mรฅ sรธke etter hver krukke og laste dem ned รฉn etter รฉn.

For eksempel, her er hvordan du laster ned en av jar-filene, ยซCucumber-coreยป-biblioteket.

Klikk pรฅ nedlastingslenken ovenfor. Den omdirigerer til Maven Repository-nettstedet. Sรธk nรฅ etter den spesifikke jar-filen (i dette tilfellet ยซCucumber Coreโ€) som vist pรฅ skjermbildet nedenfor:

Sรธker etter Cucumber Kjerne-jar i Maven Repository

Pรฅ neste side klikker du pรฅ versjon 1.2.2:

Velg Cucumber Kjerneversjon 1.2.2 i Maven

Pรฅ neste skjermbilde klikker du pรฅ Last ned for รฅ hente Cucumber Kjerne jar-fil:

Last ned Cucumber Core jar-fil

OBS: For enkelhets skyld har vi samlet de nรธdvendige Maven jar-filene. her.Disse JAR-filene kan bli utdaterte og inkompatible over tid, sรฅ vi anbefaler at du laster dem ned selv ved รฅ bruke metoden beskrevet ovenfor.

Automatiseringstesting ved hjelp av Cucumber med Selenium

La oss gรฅ gjennom hvordan man bruker Cucumber med Selenium steg for steg. Her skal vi dekke tre scenarioer:

  • Scenario 1: Skriv ut tekst i konsollen.
  • Scenario 2: Skriv inn pรฅloggingsinformasjonen og tilbakestill verdien.
  • Scenario 3: Skriv inn pรฅloggingsinformasjonen pรฅ Guru99 og tilbakestill verdien โ€“ gjentatt for 3 datasett.

Scenario 1: Skriv ut tekst i konsollen

I dette scenariet skriver vi ganske enkelt ut tekst i konsollen ved hjelp av Cucumber.

Trinn 1) Opprett et prosjekt i Eclipse.

Lag en Java prosjekt med navnet "CucumberMedSelenium" som vist pรฅ skjermbildet nedenfor.

Opprett CucumberMedSelenium Java prosjekt i Eclipse

Java prosjektnavnkonfigurasjon i Eclipse

Trinn 2) Legg til jar-filene i prosjektet.

Hรธyreklikk pรฅ prosjektet > Egenskaper > Java Bygg bane. Legg til alle bibliotekene du lastet ned tidligere.

Legg til Cucumber og Selenium jar-filer til Java Bygg sti

Trinn 3) Opprett en funksjonsfil.

For รฅ opprette en funksjonsfil, mรฅ du fรธrst opprette en funksjonsmappe som vist pรฅ skjermbildet nedenfor.

Opprett funksjonsmappe i Eclipse prosjekt

Skriv inn mappenavnet ยซFunksjonerยป og klikk pรฅ Fullfรธr.

Navn pรฅ mappe for konfigurasjonsfunksjoner i Eclipse

Funksjonsmappen er synlig i prosjektutforskeren

Opprett nรฅ en funksjonsfil i funksjonsmappen med navnet Funksjoner MinTest.funksjonProsessen ligner pรฅ รฅ opprette en mappe.

Opprett MyTest.feature-filen i Features-mappen

OBS: Du mรฅ kanskje installere Cucumber Eclipse Plugin fรธrst. Gรฅ til Hjelp โ†’ Installer ny programvare, lim inn lenken http://cucumber.github.io/cucumber-eclipse/update-site/, og installer den.

Trinn 4) Skriv scenariene.

Linjene nedenfor er skrevet i MinTest.funksjon ved bruk 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 Forklaring

Linje 1) Definerer forretningsfunksjonaliteten.

Linje 2) Definerer et scenario som skal testes.

Linje 3) Definerer forutsetningen (gitt).

Linje 4) Definerer handlingen som skal utfรธres (Nรฅr).

Linje 5) Definerer forventet utfall eller resultat (Deretter).

Trinn 5) Skrive den Selenium TestRunner-skript for Cucumber rammeverksdesign.

Lag en TestRunner pakke og deretter en Runner.java klassefilen 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 det ovennevnte Cucumber Java for eksempel kjรธrer vi agurk test ved รฅ bruke fรธlgende merknader:

@RunWith() forteller JUnit om testlรธperklassen som begynner รฅ kjรธre testene vรฅre.

@CucumberAlternativer() angir testegenskaper som funksjonsfilbanen og trinndefinisjonslimpakken.

Skjermbilde av TestRunner-filen:

Runner.java TestRunner-skript for Cucumber

Trinn 6) Opprett skriptet for trinndefinisjon.

Opprett nรฅ en StegDefinisjon pakke og deretter en Steps.java skriptfilen under den. Inne i Steps.java skriver vi Selenium logikk som er kartlagt til hvert sylteagurk-trinn.

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 er oppkalt Stepsog Cucumber annoteringer tilordner hver metode til et funksjonsfiltrinn:

@Gi definerer metoden for รฅ รฅpne Firefox og start applikasjonen.

@Nรฅr definerer metoden for รฅ legge inn brukernavn og passord.

@Da definerer metoden for รฅ tilbakestille legitimasjonsinformasjonen.

Hver metode skriver ganske enkelt ut en melding til konsollen.

Skjermbildet nedenfor viser Steps.java-skriptet og prosjekttreet:

Steps.java-skript og prosjekttre i Eclipse

OBS: En trinndefinisjon er koden du รธnsker Cucumber รฅ kjรธre nรฅr den samsvarer med et funksjonsfiltrinn.

Trinn 7) Utfรธr skriptet.

Kjรธr dette skriptet fra TestRunner-filen (Runner.java) som vist nedenfor.

Kjรธr Runner.java for รฅ kjรธre Cucumber test

Trinn 8) Analyser utgangen.

Nรฅr du kjรธrer Runner.java, Cucumber skriver ut den samme teksten som er definert i Steps.java til konsollen.

Konsollutgang fra Cucumber testutfรธrelse

Scenario 2: Skriv inn pรฅloggingsinformasjon og tilbakestill verdien

Her legger vi inn legitimasjonsinformasjonen pรฅ Guru99 demo-innloggingsside og tilbakestill verdien.

For scenario 2 trenger vi bare รฅ oppdatere Steps.javaHer legger vi til den virkelige Selenium kode. Fรธrst mรฅ du sรธrge for at Selenium jar-filen legges til prosjektet.

Bekrefte Selenium jar-filen er pรฅ prosjektets klassesti

Trinn 1) Oppdater Steps.java-skriptet som vist nedenfor.

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

Skjermbilde av ovenstรฅende Selenium manus:

Scenario 2 Steps.java med Selenium logikk

Trinn 2) Utfรธr skriptet.

Etter at du har oppdatert Steps.java, kjรธr Runner.java.

Trinn 3) Analyser resultatet. I resultatet vil du se fรธlgende:

  • Nettleser startet.
  • GuruDemoside for 99 bank รฅpnes.
  • Brukernavn og passord skrives inn pรฅ innloggingssiden.
  • Tilbakestillingsknappen sletter verdiene.

Animasjon av scenario 2 som vises Cucumber Selenium prรธvekjรธring

Scenario 3: Kjรธr pรฅloggings- og tilbakestillingsflyten med 3 datasett

Her mรฅ vi oppdatere begge Steps.java og funksjonsfilen for รฅ kjรธre den samme flyten med tre sett med legitimasjonsinformasjon.

Trinn 1) Oppdater funksjonsfilen som vist nedenfor.

Vi bruker Scenariooversikt og Eksempler syntaks sรฅ Cucumber lรธkker det samme scenarioet pรฅ tvers av hver 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 |

Funksjonsfil med scenariooversikt og eksempeltabell

Trinn 2) Oppdater Steps.java-skriptet.

Her oppdaterer vi metodesignaturene slik at de godtar parametere fra eksempeltabellen.

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

Oppdatert Steps.java med parameteriserte legitimasjonsdetaljer

Trinn 3) Kjรธr det oppdaterte skriptet.

Skjermbildet nedenfor viser en vellykket utfรธrelse og tiden det tar for hvert datasett.

Vellykket utfรธrelse av scenario 3 med tre datasett

Trinn 4) Analyser resultatet. Fรธlgende trinn gjentas for hvert av de tre datasettene:

  • Nettleser startet.
  • GuruDemoside for 99 bank รฅpnes.
  • Brukernavn og passord skrives inn pรฅ innloggingssiden.
  • Tilbakestillingsknappen sletter verdiene.

Scenario 3-animasjon som viser parameteriserte Cucumber prรธvekjรธring

Spรธrsmรฅl og svar

Cucumber er et BDD-rammeverk som kjรธrer scenarier skrevet i Gherkin. Selenium er et nettleserautomatiseringsbibliotek som driver nettsider. Cucumber samhandler ikke direkte med nettlesere โ€“ den kaller Selenium trinndefinisjoner for รฅ utfรธre de faktiske brukergrensesnitthandlingene.

Cucumber Feature-filer bruker Gherkin, et domenespesifikt sprรฅk pรฅ vanlig engelsk som organiserer scenarier med nรธkkelord som Feature, Scenario, Gitt, Nรฅr, Sรฅ, Og, Men, Scenario Outline og Eksempler. Gherkin er lesbar av bรฅde tekniske og ikke-tekniske interessenter.

Bruk nรธkkelordet Scenario Outline med en eksempeltabell. Cucumber utfรธrer det samme scenarioet รฉn gang per rad, og erstatter med plassholdere som og med verdiene fra hver rad. Dette er standard datadrevet mรธnster i Cucumber.

AI genererer Gherkin-scenarier fra brukerhistorier, anbefaler trinndefinisjoner, reparerer รธdelagte lokatorer i Selenium, og foreslรฅr eksempeldata. AI-assistenter flagger ogsรฅ dupliserte scenarier, svake pรฅstander og foreldede tester, noe som holder BDD-pakken vedlikeholdbar etter hvert som applikasjonen endres.

Ja. AI-kodingsassistenter leser Gherkin-funksjonsfiler og genererer samsvarende filer. Java eller Kotlin-trinndefinisjoner, inkludert Selenium WebDriver-kall, locator-strategier og parameterbinding. Utviklere forbedrer deretter den genererte koden, noe som reduserer standardkravene dramatisk ved oppstart.ping nye BDD-suiter.

Oppsummer dette innlegget med: