Selenium med Cucumber (BDD Framework Tutorial)

โšก Smart opsummering

Selenium med Cucumber danner et kraftfuldt adfรฆrdsdrevet udviklingsframework (BDD), der kombinerer almindelig engelsk Gherkin-syntaks med Selenium WebDriver-automatisering. Denne vejledning forklarer forudsรฆtningerne, gennemgรฅr tre praktiske scenarier og viser, hvordan funktionsfiler, trindefinitioner og en TestRunner-klasse integreres for at udfรธre browsertests.

  • ???? Kernedefinition: Cucumber er et BDD-testvรฆrktรธj, der beskriver applikationsadfรฆrd pรฅ almindeligt engelsk ved hjรฆlp af Gherkin, og Selenium styrer browserens handlinger nedenunder.
  • ๐Ÿค Interessentbro: Cucumber forbinder forretningsanalytikere, manuelle testere, automatiseringsingeniรธrer og udviklere gennem en delt, lรฆsbar testspecifikation.
  • ๐Ÿ“ฆ Nรธdvendige krukker: Selenium selvstรฆndig, Cucumber-kerne, Cucumber-java, Cucumber-junit, sylteagurk, JUnit, og Hamcrest-core danner det minimale afhรฆngighedssรฆt.
  • ๐Ÿงฑ Tre projektfiler: En .feature-fil med scenarier, en Steps.java step-definition-klasse og en Runner.java TestRunner med @CucumberMuligheder for lim.
  • ๐Ÿ” Datadrevne tests: Brug tabellerne Scenarieoversigt plus Eksempel til at kรธre det samme flow mod flere sรฆt legitimationsoplysninger i รฉn udfรธrelse.

Selenium med Cucumber (BDD Framework Tutorial)

I denne tutorial lรฆrer du, hvordan du integrerer Cucumber med Selenium WebDriver til at bygge et adfรฆrdsdrevet udviklingsframework (BDD), der er lรฆsbart, vedligeholdeligt og datadrevet.

Hvad er Cucumber?

Cucumber er et testvรฆrktรธj, der understรธtter adfรฆrdsdrevet udvikling (BDD). Det beskriver en applikations adfรฆrd i simpel engelsk tekst ved hjรฆlp af Gherkin-sproget, som giver ikke-udviklere mulighed for at bidrage til testspecifikationer uden at lรฆre et programmeringssprog. Lรฆr mere i vores Cucumber tutorial.

Hvad er Selenium?

Selenium er et automatiseringsvรฆrktรธj, der bruges til Funktionstest af webbaserede applikationer. Selenium understรธtter flere programmeringssprog, herunder Java, Rubin, Pythonog C#, hvilket gรธr det til et naturligt match for teams med blandede tekniske baggrunde. Lรฆr mere i vores Selenium tutorial.

Hvorfor brug Cucumber med Selenium?

Cucumber og Selenium er to af de mest udbredte testteknologier. De fleste organisationer bruger allerede Selenium til funktionel testning og รธnsker at lรฆgge lag Cucumber pรฅ toppen fordi Cucumber gรธr det nemt at lรฆse og forstรฅ applikationsflowet.

Cucumber er baseret pรฅ rammevรฆrket for adfรฆrdsdrevet udvikling, der fungerer som en bro mellem fรธlgende roller:

  1. Softwareingeniรธr og forretningsanalytiker.
  2. Manuel tester og automatiseringstester.
  3. Manuel tester og udviklere.

Cucumber BDD ramme ogsรฅ hjรฆlper klienter med at forstรฅ applikationskoden fordi det bruger Gherkin-sproget, som er i almindelig tekst. Enhver i organisationen kan fรธlge softwarens opfรธrsel. Gherkin-syntaksen er pรฅ enkelt lรฆsbart engelsk, hvilket holder specifikationen tilgรฆngelig for ikke-tekniske lรฆsere.

Cucumber med Selenium Oversigt over BDD-rammevรฆrket

Forudsรฆtninger for brug Cucumber med Selenium

Inden vi starter Cucumber-Selenium integration, skal du bruge fรธlgende ting:

Selenium jar filer:

  • Selenium-server-standalone

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

Selenium Downloadside for jar-filer

Jar-filer til Cucumber:

  • Cucumber-kerne
  • Cucumber-html
  • Cobertura kodedรฆkning
  • Cucumber-java
  • Cucumber-junit
  • Cucumber-jvm-deps
  • Cucumber-indberetning
  • Hamcrest-kerne
  • Sylteagurk
  • JUnit

Du kan downloade dem pรฅ https://mvnrepository.com/search?q=CucumberDu skal sรธge efter hver krukke og downloade dem รฉn efter รฉn.

For eksempel, her er hvordan du downloader en af โ€‹โ€‹jar-filerne, "Cucumber-coreโ€ bibliotek.

Klik pรฅ downloadlinket ovenfor. Det omdirigerer til Maven Repository-webstedet. Sรธg nu efter den specifikke jar (i dette tilfรฆlde "Cucumber Coreโ€) som vist pรฅ skรฆrmbilledet nedenfor:

Sรธger efter Cucumber Core-jar i Maven Repository

Pรฅ nรฆste side skal du klikke pรฅ version 1.2.2:

Type Cucumber Kerneversion 1.2.2 i Maven

Pรฅ det nรฆste skรฆrmbillede skal du klikke pรฅ Download for at hente Cucumber Core jar-fil:

Download Cucumber Core jar-fil

Bemรฆrk: For nemheds skyld har vi samlet de nรธdvendige Maven jar-filer. link.Disse jar-filer kan blive forรฆldede og inkompatible med tiden, sรฅ vi anbefaler at downloade dem selv ved hjรฆlp af den ovenfor beskrevne metode.

Automationstest ved hjรฆlp af Cucumber med Selenium

Lad os gennemgรฅ, hvordan man bruger det Cucumber med Selenium trin for trin. Her vil vi dรฆkke tre scenarier:

  • Scenario 1: Udskriv tekst i konsollen.
  • Scenarie 2: Indtast loginoplysninger, og nulstil vรฆrdien.
  • Scenarie 3: Indtast loginoplysninger pรฅ Guru99 og nulstil vรฆrdien โ€” gentaget for 3 datasรฆt.

Scenarie 1: Udskriv tekst i konsollen

I dette scenarie udskriver vi blot tekst i konsollen ved hjรฆlp af Cucumber.

Trin 1) Opret et projekt i Eclipse.

Opret en Java projekt med navnet "CucumberMedSelenium" som vist pรฅ skรฆrmbilledet nedenfor.

Opret CucumberMedSelenium Java projekt i Eclipse

Java projektnavnkonfiguration i Eclipse

Trin 2) Tilfรธj jar-filerne til projektet.

Hรธjreklik pรฅ projektet > Egenskaber > Java Byg sti. Tilfรธj alle de biblioteker, du downloadede tidligere.

Tilfรธj Cucumber og Selenium jar-filer til Java Byg sti

Trin 3) Opret en funktionsfil.

For at oprette en funktionsfil skal du fรธrst oprette en funktionsmappe som vist pรฅ skรฆrmbilledet nedenfor.

Opret funktionsmappe i Eclipse projekt

Indtast mappenavnet "Funktioner", og klik pรฅ Udfรธr.

Navn pรฅ mappenavnet Konfigurer funktioner i Eclipse

Funktionsmappe synlig i projektstifinder

Opret nu en funktionsfil i mappen Funktioner med navnet MinTest.funktionProcessen ligner oprettelse af en mappe.

Opret MyTest.feature-filen i Features-mappen

Bemรฆrk: Du skal muligvis installere Cucumber Eclipse Plugin fรธrst. Gรฅ til Hjรฆlp โ†’ Installer ny software, indsรฆt linket http://cucumber.github.io/cucumber-eclipse/update-site/, og installer det.

Trin 4) Skriv scenarierne.

Linjerne nedenfor er skrevet i MinTest.funktion ved hjรฆlp af Gherkin-sproget:

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

Linje 2) Definerer et scenarie, der skal testes.

Linje 3) Definerer forudsรฆtningen (Given).

Linje 4) Definerer den handling, der skal udfรธres (Hvornรฅr).

Linje 5) Definerer det forventede resultat eller udfald (Sรฅ).

Trin 5) Skriv Selenium TestRunner-script til Cucumber rammedesign.

Opret en TestRunner pakke og derefter 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 ovenstรฅende Cucumber Java eksempel, vi kรธrer agurk test ved hjรฆlp af fรธlgende annotationer:

@RunWith() fortรฆller JUnit om testlรธberklassen, der begynder at udfรธre vores tests.

@CucumberValgmuligheder() angiver testegenskaber sรฅsom stien til funktionsfilen og limpakken til trindefinitioner.

Skรฆrmbillede af TestRunner-filen:

Runner.java TestRunner script til Cucumber

Trin 6) Opret scriptet til trindefinitionen.

Opret nu en TrinDefinition pakke og derefter en Steps.java scriptfilen under den. Inde i Steps.java skriver vi Selenium logik, der knytter sig til hvert Agurk-trin.

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 navngivet Stepsog Cucumber annotationer knytter hver metode til et funktionsfiltrin:

@Givet definerer metoden til at รฅbne Firefox og start applikationen.

@Hvornรฅr definerer metoden til at indtaste brugernavn og adgangskode.

@Derefter definerer metoden til at nulstille legitimationsoplysningerne.

Hver metode udskriver blot en besked til konsollen.

Skรฆrmbilledet nedenfor viser Steps.java-scriptet og projekttrรฆet:

Steps.java-script og projekttrรฆ i Eclipse

Bemรฆrk: En trindefinition er den kode, du รธnsker Cucumber at udfรธre, nรฅr den matcher et funktionsfiltrin.

Trin 7) Udfรธr scriptet.

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

Kรธr Runner.java for at kรธre Cucumber prรธve

Trin 8) Analyser outputtet.

Ved udfรธrelse af Runner.java, Cucumber udskriver den samme tekst, som er defineret i Steps.java, til konsollen.

Konsoloutput fra Cucumber testudfรธrelse

Scenarie 2: Indtast loginoplysninger og nulstil vรฆrdien

Her indtaster vi legitimationsoplysninger pรฅ Guru99 demo login-side og nulstil vรฆrdien.

For scenarie 2 behรธver vi kun at opdatere Steps.javaHer tilfรธjer vi den reelle Selenium kode. Sรธrg fรธrst for, at Selenium jar-filen tilfรธjes til projektet.

Bekrรฆfte Selenium jar-filen er pรฅ projektets klassesti

Trin 1) Opdater Steps.java-scriptet 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();
    }
}

Skรฆrmbillede af ovenstรฅende Selenium manuskript:

Scenarie 2 Trin.java med Selenium logik

Trin 2) Udfรธr scriptet.

Kรธr Runner.java efter opdateringen af โ€‹โ€‹Steps.java.

Trin 3) Analysรฉr outputtet. I outputtet vil du se fรธlgende:

  • Browser startet.
  • Guru99 bank demoside รฅbner.
  • Brugernavn og adgangskode indtastes pรฅ login-siden.
  • Nulstillingsknappen sletter vรฆrdierne.

Visning af animation i scenarie 2 Cucumber Selenium test lรธb

Scenarie 3: Kรธr login- og nulstillingsflowet med 3 datasรฆt

Her skal vi opdatere begge dele Steps.java og funktionsfilen til at drive det samme flow med tre sรฆt legitimationsoplysninger.

Trin 1) Opdater funktionsfilen som vist nedenfor.

Vi bruger Scenarieoversigt og Eksempler syntaks sรฅ Cucumber Lรธkker det samme scenarie pรฅ tvรฆrs af hver datarรฆkke.

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 scenarieoversigt og eksempeltabel

Trin 2) Opdater Steps.java-scriptet.

Her opdaterer vi metodesignaturerne, sรฅ de accepterer parametre fra tabellen Eksempel.

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

Opdateret Steps.java med parametriserede legitimationsoplysninger

Trin 3) Udfรธr det opdaterede script.

Skรฆrmen nedenfor viser en vellykket udfรธrelse og den tid, det tager for hvert datasรฆt.

Succesfuld udfรธrelse af scenarie 3 med tre datasรฆt

Trin 4) Analysรฉr outputtet. Fรธlgende trin gentages for hvert af de 3 datasรฆt:

  • Browser startet.
  • Guru99 bank demoside รฅbner.
  • Brugernavn og adgangskode indtastes pรฅ login-siden.
  • Nulstillingsknappen sletter vรฆrdierne.

Scenarie 3-animation, der viser parametriseret Cucumber test lรธb

Ofte Stillede Spรธrgsmรฅl

Cucumber er et BDD-framework, der kรธrer scenarier skrevet i Gherkin. Selenium er et browser-automatiseringsbibliotek, der driver websider. Cucumber interagerer ikke direkte med browsere โ€” den kalder Selenium trindefinitioner til at udfรธre de faktiske brugergrรฆnsefladehandlinger.

Cucumber Feature-filer bruger Gherkin, et domรฆnespecifikt sprog pรฅ almindeligt engelsk, der organiserer scenarier med nรธgleord som Feature, Scenario, Given, When, Then, And, But, Scenario Outline og Examples. Gherkin kan lรฆses af bรฅde tekniske og ikke-tekniske interessenter.

Brug nรธgleordet Scenario Outline med en eksempeltabel. Cucumber udfรธrer det samme scenarie รฉn gang pr. rรฆkke og erstatter med pladsholdere som f.eks. og med vรฆrdierne fra hver rรฆkke. Dette er det standard datadrevne mรธnster i Cucumber.

AI genererer Gherkin-scenarier fra brugerhistorier, anbefaler trindefinitioner og reparerer รธdelagte lokaliseringsvรฆrktรธjer i Seleniumog foreslรฅr eksempler pรฅ data. AI-assistenter markerer ogsรฅ dublerede scenarier, svage pรฅstande og forรฆldede tests, hvilket holder BDD-pakken vedligeholdelig, nรฅr applikationen รฆndres.

Ja. AI-kodningsassistenter lรฆser Gherkin-funktionsfiler og genererer matchende filer. Java eller Kotlin-trindefinitioner, inklusive Selenium WebDriver-kald, locatorstrategier og parameterbinding. Udviklere forfiner derefter den genererede kode, hvilket dramatisk reducerer standardkravene ved bootstrap.ping nye BDD-suiter.

Opsummer dette indlรฆg med: