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.

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:
- Softwareingeniรธr og forretningsanalytiker.
- Manuel tester og automatiseringstester.
- 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.
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/.
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:
Pรฅ nรฆste side skal du klikke pรฅ version 1.2.2:
Pรฅ det nรฆste skรฆrmbillede skal du klikke pรฅ Download for at hente 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.
Trin 2) Tilfรธj jar-filerne til projektet.
Hรธjreklik pรฅ projektet > Egenskaber > Java Byg sti. Tilfรธj alle de biblioteker, du downloadede tidligere.
Trin 3) Opret en funktionsfil.
For at oprette en funktionsfil skal du fรธrst oprette en funktionsmappe som vist pรฅ skรฆrmbilledet nedenfor.
Indtast mappenavnet "Funktioner", og klik pรฅ Udfรธr.
Opret nu en funktionsfil i mappen Funktioner med navnet MinTest.funktionProcessen ligner oprettelse af en mappe.
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:
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:
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.
Trin 8) Analyser outputtet.
Ved udfรธrelse af Runner.java, Cucumber udskriver den samme tekst, som er defineret i Steps.java, til konsollen.
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.
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:
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.
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 |
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();
}
}
Trin 3) Udfรธr det opdaterede script.
Skรฆrmen nedenfor viser en vellykket udfรธrelse og den tid, det tager for hvert 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.























