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.

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:
- Programvareingeniรธr og forretningsanalytiker.
- Manuell tester og automatiseringstester.
- 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.
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/.
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:
Pรฅ neste side klikker du pรฅ versjon 1.2.2:
Pรฅ neste skjermbilde klikker du pรฅ Last ned for รฅ hente Cucumber Kjerne 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.
Trinn 2) Legg til jar-filene i prosjektet.
Hรธyreklikk pรฅ prosjektet > Egenskaper > Java Bygg bane. Legg til alle bibliotekene du lastet ned tidligere.
Trinn 3) Opprett en funksjonsfil.
For รฅ opprette en funksjonsfil, mรฅ du fรธrst opprette en funksjonsmappe som vist pรฅ skjermbildet nedenfor.
Skriv inn mappenavnet ยซFunksjonerยป og klikk pรฅ Fullfรธr.
Opprett nรฅ en funksjonsfil i funksjonsmappen med navnet Funksjoner MinTest.funksjonProsessen ligner pรฅ รฅ opprette en mappe.
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:
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:
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.
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.
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.
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:
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.
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 |
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();
}
}
Trinn 3) Kjรธr det oppdaterte skriptet.
Skjermbildet nedenfor viser en vellykket utfรธrelse og tiden det tar for hvert 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.























