Selenium with Cucumber (BDD Framework-zelfstudie)
โก Slimme samenvatting
Selenium with Cucumber vormt een krachtig Behavior Driven Development (BDD)-framework dat de eenvoudige Gherkin-syntaxis combineert met Selenium WebDriver-automatisering. Deze handleiding legt de vereisten uit, doorloopt drie praktijkvoorbeelden en laat zien hoe feature-bestanden, stapdefinities en een TestRunner-klasse samenwerken om browsertests uit te voeren.

In deze tutorial leert u hoe u kunt integreren Cucumber with Selenium WebDriver wordt gebruikt om een โโBehavior Driven Development (BDD)-framework te bouwen dat leesbaar, onderhoudbaar en datagestuurd is.
Wat is Cucumber?
Cucumber is een testtool die Behavior Driven Development (BDD) ondersteunt. Het beschrijft het gedrag van een applicatie in eenvoudige Engelse tekst met behulp van de Gherkin-taal, waardoor niet-ontwikkelaars kunnen bijdragen aan testspecificaties zonder een programmeertaal te hoeven leren. Lees meer in onze Cucumber zelfstudie.
Wat is Selenium?
Selenium is een automatiseringstool die gebruikt wordt voor Functioneel testen van webgebaseerde applicaties. Selenium ondersteunt meerdere programmeertalen, waaronder Java, Robijn, Pythonen C#, waardoor het een natuurlijke keuze is voor teams met uiteenlopende technische achtergronden. Lees meer in onze Selenium zelfstudie.
Waarom gebruiken Cucumber with Selenium?
Cucumber en Selenium zijn twee van de meest gebruikte testtechnologieรซn. De meeste organisaties gebruiken deze al. Selenium voor functionele testen en wil gelaagdheid toepassen Cucumber bovenaan omdat Cucumber Het maakt het applicatieproces gemakkelijk leesbaar en begrijpelijk..
Cucumber is gebaseerd op het Behavior Driven Development-raamwerk dat fungeert als een brug tussen de volgende rollen:
- Software Engineer en Business Analist.
- Handmatige tester en automatiseringstester.
- Handmatige testers en ontwikkelaars.
De Cucumber BDD-framework ook helpt klanten de applicatiecode te begrijpen Omdat het gebruikmaakt van de Gherkin-taal, die in platte tekst is geschreven. Iedereen binnen de organisatie kan het gedrag van de software volgen. De Gherkin-syntaxis is in eenvoudig leesbaar Engels, waardoor de specificatie toegankelijk blijft voor niet-technische lezers.
Vereisten voor gebruik Cucumber with Selenium
Voordat we beginnen met de Cucumber-Selenium Voor de integratie heb je de volgende items nodig:
Selenium jar-bestanden:
- Selenium-server-standalone
Je kunt ze downloaden via https://www.selenium.dev/downloads/.
JAR-bestanden voor Cucumber:
- Cucumber-core
- Cucumber-html
- Cobertura code dekking
- Cucumber-Java
- Cucumber-junit
- Cucumber-jvm-deps
- Cucumber-rapportage
- Hamcrest-kern
- augurkje
- JUnit
Je kunt ze downloaden via https://mvnrepository.com/search?q=CucumberJe moet elk jar-bestand opzoeken en รฉรฉn voor รฉรฉn downloaden.
Hier is bijvoorbeeld hoe je een van de jar-bestanden kunt downloaden, namelijk de "Cucumber-coreโ bibliotheek.
Klik op de downloadlink hierboven. Je wordt doorgestuurd naar de Maven Repository-website. Zoek nu naar het specifieke jar-bestand (in dit geval "Cucumber Coreโ) zoals weergegeven in de onderstaande schermafbeelding:
Klik op de volgende pagina op versie 1.2.2:
Klik op het volgende scherm op Downloaden om het bestand te downloaden. Cucumber Kern JAR-bestand:
Let op: Voor uw gemak hebben we de benodigde Maven JAR-bestanden gebundeld. hierDeze JAR-bestanden kunnen na verloop van tijd verouderd en incompatibel raken. Daarom raden we aan ze zelf te downloaden via de hierboven beschreven methode.
Automatisering testen met behulp van Cucumber with Selenium
Laten we eens bekijken hoe je het kunt gebruiken. Cucumber with Selenium Stap voor stap. We bespreken hier drie scenario's:
- Scenario 1: Tekst afdrukken in de console.
- Scenario 2: Voer de inloggegevens in en reset de waarde.
- Scenario 3: Voer inloggegevens in op Guru99 en de waarde opnieuw instellen โ dit werd herhaald voor 3 sets gegevens.
Scenario 1: Tekst afdrukken in de console
In dit scenario printen we eenvoudigweg tekst in de console met behulp van Cucumber.
Stap 1) Maak een project aan in Eclipse.
Maak een Java project met de naam "CucumberMetSelenium" zoals getoond in de onderstaande screenshot.
Stap 2) Voeg de JAR-bestanden toe aan het project.
Klik met de rechtermuisknop op het project > Eigenschappen > Java Bouwpad. Voeg alle eerder gedownloade bibliotheken toe.
Stap 3) Maak een featurebestand aan.
Om een โโfeaturebestand te maken, moet u eerst een map genaamd 'Features' aanmaken, zoals weergegeven in de onderstaande schermafbeelding.
Voer de mapnaam "Functies" in en klik op Voltooien.
Maak nu een feature-bestand aan in de map Features met de naam MijnTest.functieHet proces is vergelijkbaar met het aanmaken van een map.
Let op: Mogelijk moet u de Cucumber Eclipse Installeer eerst de plugin. Ga naar Help โ Nieuwe software installeren en plak de link. http://cucumber.github.io/cucumber-eclipse/update-site/en installeer het.
Stap 4) Schrijf de scenario's op.
De onderstaande regels zijn geschreven in MijnTest.functie met behulp van de Gherkin-taal:
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 Uitleg
Lijn 1) Definieert de bedrijfsfunctionaliteit.
Lijn 2) Definieert een testscenario.
Lijn 3) Definieert de voorwaarde (Gegeven).
Lijn 4) Definieert de uit te voeren actie (Wanneer).
Lijn 5) Definieert de verwachte uitkomst of het verwachte resultaat (Dan).
Stap 5) Schrijf de Selenium TestRunner-script voor de Cucumber frameworkontwerp.
Maak een TestRunner pakket en vervolgens een Runner.java klassebestand eronder.
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
{
}
In bovenstaande Cucumber Java bijvoorbeeld voeren we de uit komkommer proef met behulp van de volgende annotaties:
@Rennen met() vertelt JUnit Over de testrunnerklasse die onze tests uitvoert.
@CucumberOpties() Hiermee worden testeigenschappen ingesteld, zoals het pad naar het featurebestand en het pakket voor de stapdefinitie.
Schermafbeelding van het TestRunner-bestand:
Stap 6) Maak het stapdefinitiescript aan.
Maak nu een StapDefinitie pakket en vervolgens een Steps.java scriptbestand eronder. In Steps.java schrijven we het volgende. Selenium logica die overeenkomt met elke Gherkin-stap.
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.");
}
}
De klasse heet Stappenen Cucumber De annotaties koppelen elke methode aan een stap in het featurebestand:
@Gegeven definieert de methode om te openen Firefox en start de applicatie.
@Wanneer Definieert de methode voor het invoeren van de gebruikersnaam en het wachtwoord.
@Dan Definieert de methode om de inloggegevens te resetten.
Elke methode print simpelweg een bericht naar de console.
De onderstaande schermafbeelding toont het Steps.java-script en de projectstructuur:
Let op: Een stapdefinitie is de code die je wilt Cucumber Uit te voeren wanneer dit overeenkomt met een stap in een feature-bestand.
Stap 7) Voer het script uit.
Voer dit script uit vanuit het bestand TestRunner (Runner.java) zoals hieronder weergegeven.
Stap 8) Analyseer de uitvoer.
Bij het uitvoeren van Runner.java, Cucumber print dezelfde tekst als gedefinieerd in Steps.java naar de console.
Scenario 2: Voer inloggegevens in en reset de waarde
Hier voeren we de inloggegevens in op de GuruGa naar de demo-inlogpagina (pagina 99) en reset de waarde.
Voor scenario 2 hoeven we alleen maar een update uit te voeren. Steps.javaHier voegen we het echte toe. Selenium code. Zorg er eerst voor dat de Selenium Het JAR-bestand wordt aan het project toegevoegd.
Stap 1) Werk het Steps.java-script bij zoals hieronder weergegeven.
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();
}
}
Screenshot van het bovenstaande Selenium script:
Stap 2) Voer het script uit.
Nadat je Steps.java hebt bijgewerkt, voer je Runner.java uit.
Stap 3) Analyseer de uitvoer. In de uitvoer ziet u het volgende:
- Browser gelanceerd.
- GuruDemosite van 99 Bank geopend.
- Gebruikersnaam en wachtwoord worden ingevoerd op de inlogpagina.
- Met de resetknop worden de waarden gewist.
Scenario 3: Voer de inlog- en resetprocedure uit met 3 sets gegevens.
Hier moeten we beide bijwerken. Steps.java en het functiebestand om dezelfde workflow aan te sturen met drie sets inloggegevens.
Stap 1) Werk het functiebestand bij zoals hieronder weergegeven.
We maken gebruik van de Scenariooverzicht en Voorbeelden syntaxis dus Cucumber Herhaalt hetzelfde scenario voor elke rij met gegevens.
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 |
Stap 2) Werk het Steps.java-script bij.
Hier werken we de methodesignaturen bij zodat ze parameters uit de tabel 'Voorbeelden' accepteren.
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();
}
}
Stap 3) Voer het bijgewerkte script uit.
Onderstaande afbeelding toont een succesvolle uitvoering en de tijd die elke dataset in beslag nam.
Stap 4) Analyseer de uitvoer. De volgende stappen worden herhaald voor elk van de 3 datasets:
- Browser gelanceerd.
- GuruDemosite van 99 Bank geopend.
- Gebruikersnaam en wachtwoord worden ingevoerd op de inlogpagina.
- Met de resetknop worden de waarden gewist.























