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.

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:
- Mjukvaruingenjรถr och affรคrsanalytiker.
- Manuell testare och automationstestare.
- 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.
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/.
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:
Pรฅ nรคsta sida klickar du pรฅ version 1.2.2:
Pรฅ nรคsta skรคrm klickar du pรฅ Ladda ner fรถr att hรคmta Cucumber Kรคrn-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.
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.
Steg 3) Skapa en funktionsfil.
Fรถr att skapa en funktionsfil, skapa fรถrst en funktionsmapp som visas pรฅ skรคrmbilden nedan.
Ange mappnamnet "Funktioner" och klicka pรฅ Slutfรถr.
Skapa nu en funktionsfil i mappen Funktioner med namnet MittTest.funktionProcessen liknar den nรคr man skapar en mapp.
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:
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:
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.
Steg 8) Analysera resultatet.
Vid kรถrning av Runner.java, Cucumber skriver ut samma text som definierats i Steps.java till konsolen.
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.
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:
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.
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 |
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();
}
}
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.
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.























