Selenium und Cucumber (BDD-Framework-Tutorial)

โšก Intelligente Zusammenfassung

Selenium und Cucumber bildet ein leistungsstarkes Framework fรผr verhaltensgetriebene Entwicklung (BDD), das die Gherkin-Syntax in einfacher Sprache mit Selenium WebDriver-Automatisierung. Dieses Tutorial erlรคutert die Voraussetzungen, fรผhrt durch drei praktische Szenarien und zeigt, wie Feature-Dateien, Schrittdefinitionen und eine TestRunner-Klasse integriert werden, um Browsertests auszufรผhren.

  • ๐Ÿฅ’ Kerndefinition: Cucumber ist ein BDD-Testwerkzeug, das das Anwendungsverhalten in einfacher Sprache mithilfe von Gherkin beschreibt, und Selenium steuert die zugrunde liegenden Browseraktionen.
  • ๐Ÿค Stakeholder-Brรผcke: Cucumber Verbindet Business-Analysten, manuelle Tester, Automatisierungsingenieure und Entwickler durch eine gemeinsame, gut lesbare Testspezifikation.
  • ๐Ÿ“ฆ Benรถtigte Glรคser: Selenium eigenstรคndig, Cucumber-Kern, Cucumber-Java, Cucumber-junit, Gherkin, JUnit, und Hamcrest-core bilden die minimale Abhรคngigkeitsmenge.
  • ๐Ÿงฑ Drei Projektdateien: Eine .feature-Datei mit Szenarien, eine Steps.java-Schrittdefinitionsklasse und ein Runner.java-TestRunner mit @CucumberOptionen kleben.
  • ๐Ÿ” Datengesteuerte Tests: Verwenden Sie die Tabellen โ€žSzenarioรผbersichtโ€œ und โ€žBeispieleโ€œ, um denselben Ablauf fรผr mehrere Sรคtze von Anmeldeinformationen in einer Ausfรผhrung durchzufรผhren.

Selenium und  Cucumber (BDD-Framework-Tutorial)

In diesem Tutorial erfahren Sie, wie Sie Cucumber und Selenium WebDriver zum Aufbau eines verhaltensorientierten Entwicklungsframeworks (BDD), das lesbar, wartbar und datengetrieben ist.

Was ist Cucumber?

Cucumber ist ein Testwerkzeug, das verhaltensgetriebene Entwicklung (BDD) unterstรผtzt. Es beschreibt das Verhalten einer Anwendung in einfachem Englisch mithilfe der Gherkin-Sprache, wodurch auch Nicht-Entwickler zu Testspezifikationen beitragen kรถnnen, ohne eine Programmiersprache lernen zu mรผssen. Erfahren Sie mehr in unserer Cucumber Lernprogramm.

Was ist Selenium?

Selenium ist ein Automatisierungswerkzeug, das verwendet wird fรผr Funktionsprรผfung von webbasierten Anwendungen. Selenium unterstรผtzt mehrere Programmiersprachen, einschlieรŸlich Java, Rubin, Pythonund C#, wodurch es sich ideal fรผr Teams mit unterschiedlichen technischen Hintergrรผnden eignet. Erfahren Sie mehr in unserem Selenium Lernprogramm.

Warum verwenden Cucumber und Selenium?

Cucumber und Selenium sind zwei der am weitesten verbreiteten Testtechnologien. Die meisten Organisationen nutzen sie bereits. Selenium fรผr Funktionstests und mรถchten Schichten hinzufรผgen Cucumber oben, weil Cucumber macht den Anwendungsablauf leicht lesbar und verstรคndlich..

Cucumber basiert auf dem Rahmenwerk der verhaltensorientierten Entwicklung, fungiert als Brรผcke zwischen den folgenden Rollen:

  1. Software-Ingenieur und Business-Analyst.
  2. Manueller Tester und Automatisierungstester.
  3. Manueller Tester und Entwickler.

Das Cucumber Das BDD-Framework hilft Kunden, den Anwendungscode zu verstehen. Da es die Gherkin-Sprache verwendet, die in Klartext vorliegt, kann jeder im Unternehmen das Verhalten der Software nachvollziehen. Die Gherkin-Syntax ist in einfachem, lesbarem Englisch verfasst, wodurch die Spezifikation auch fรผr Nicht-Techniker verstรคndlich bleibt.

Cucumber und  Selenium BDD-Framework-รœbersicht

Voraussetzungen fรผr die Nutzung Cucumber und Selenium

Bevor wir beginnen Cucumber-Selenium Fรผr die Integration benรถtigen Sie folgende Elemente:

Selenium JAR-Dateien:

  • Selenium-server-standalone

Sie kรถnnen sie herunterladen unter https://www.selenium.dev/downloads/.

Selenium Downloadseite fรผr JAR-Dateien

Jar-Dateien fรผr Cucumber:

  • Cucumber-Core
  • Cucumber-html
  • Cobertura Codeabdeckung
  • Cucumber-Java
  • Cucumber-junit
  • Cucumber-jvm-deps
  • Cucumber-Berichterstattung
  • Hamcrest-Kern
  • Gurke
  • JUnit

Sie kรถnnen sie herunterladen unter https://mvnrepository.com/search?q=CucumberSie mรผssen die einzelnen JAR-Dateien suchen und nacheinander herunterladen.

Hier ist beispielsweise, wie man eine der JAR-Dateien herunterlรคdt, die โ€žCucumber-coreโ€ Bibliothek.

Klicken Sie auf den obigen Download-Link. Sie werden zur Maven-Repository-Seite weitergeleitet. Suchen Sie nun nach der spezifischen JAR-Datei (in diesem Fall โ€žCucumber Coreโ€) wie im folgenden Screenshot dargestellt:

Auf der suche nach Cucumber Core-JAR im Maven-Repository

Klicken Sie auf der nรคchsten Seite auf Version 1.2.2:

Auswรคhlen Cucumber Core-Version 1.2.2 in Maven

Klicken Sie im nรคchsten Bildschirm auf โ€žHerunterladenโ€œ, um die Datei herunterzuladen. Cucumber Core-JAR-Datei:

Laden Sie Cucumber Core-JAR-Datei

Hinweis: Zur Vereinfachung haben wir die benรถtigten Maven-JAR-Dateien gebรผndelt. werden auf dieser Seite erlรคutertDiese JAR-Dateien kรถnnen mit der Zeit veralten und inkompatibel werden. Daher empfehlen wir, sie selbst mit der oben beschriebenen Methode herunterzuladen.

Automatisiertes Testen mit Cucumber und Selenium

Lassen Sie uns die Verwendung gemeinsam durchgehen. Cucumber und Selenium Schritt fรผr Schritt. Hier behandeln wir drei Szenarien:

  • Szenario 1: Text in der Konsole drucken.
  • Szenario 2: Anmeldedaten eingeben und Wert zurรผcksetzen.
  • Szenario 3: Anmeldedaten eingeben auf Guru99 und den Wert zurรผcksetzen โ€“ dies wird fรผr 3 Datensรคtze wiederholt.

Szenario 1: Text in der Konsole ausgeben

In diesem Szenario geben wir einfach Text in der Konsole aus. Cucumber.

Schritt 1) Erstellen Sie ein Projekt in Eclipse.

Erstellen Sie Java Projekt mit dem Namen "CucumberMitSelenium" wie im Screenshot unten gezeigt.

Erschaffung CucumberMitSelenium Java Projekt in Eclipse

Java Projektnamenkonfiguration in Eclipse

Schritt 2) Fรผgen Sie die JAR-Dateien zum Projekt hinzu.

Klicken Sie mit der rechten Maustaste auf das Projekt > Eigenschaften > Java Build-Pfad. Fรผgen Sie alle zuvor heruntergeladenen Bibliotheken hinzu.

Speichern Cucumber und Selenium JAR-Dateien zu Java Pfad erstellen

Schritt 3) Erstellen Sie eine Feature-Datei.

Um eine Feature-Datei zu erstellen, erstellen Sie zuerst einen Ordner โ€žFeaturesโ€œ, wie im folgenden Screenshot gezeigt.

Erstellen Sie einen Ordner โ€žFeaturesโ€œ in Eclipse Projekt

Geben Sie den Ordnernamen โ€žFeaturesโ€œ ein und klicken Sie auf Fertigstellen.

Konfigurieren Sie den Ordnernamen fรผr Funktionen in Eclipse

Der Ordner โ€žFeaturesโ€œ ist im Projekt-Explorer sichtbar.

Erstellen Sie nun eine Feature-Datei im Ordner โ€žFeaturesโ€œ mit dem Namen MyTest.featureDer Vorgang รคhnelt dem Erstellen eines Ordners.

Erstellen Sie die Datei MyTest.feature im Ordner Features

Hinweis: Mรถglicherweise mรผssen Sie die Cucumber Eclipse Installieren Sie zuerst das Plugin. Gehen Sie zu Hilfe โ†’ Neue Software installieren und fรผgen Sie den Link ein. http://cucumber.github.io/cucumber-eclipse/update-site/und installieren Sie es.

Schritt 4) Schreiben Sie die Szenarien.

Die folgenden Zeilen sind geschrieben in MyTest.feature unter Verwendung der Gherkin-Sprache:

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 Erlรคuterung

Zeile 1) Definiert die Geschรคftsfunktionalitรคt.

Zeile 2) Definiert ein zu testendes Szenario.

Zeile 3) Definiert die Vorbedingung (gegeben).

Zeile 4) Definiert die auszufรผhrende Aktion (Wann).

Zeile 5) Definiert das erwartete Ergebnis (Dann).

Schritt 5) Schreiben Sie die Selenium TestRunner-Skript fรผr die Cucumber Rahmendesign.

Erstellen Sie TestRunner Paket und dann ein Runner.java Die Klassendatei befindet sich darunter.

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 obigem Cucumber Java Beispiel: Wir fรผhren Folgendes aus Gurkentest unter Verwendung der folgenden Anmerkungen:

@RunWith() erzรคhlt JUnit รผber die Test-Runner-Klasse, die mit der Ausfรผhrung unserer Tests beginnt.

@CucumberOptionen() Legt Testeigenschaften wie den Pfad der Feature-Datei und das Schrittdefinitions-Glue-Paket fest.

Screenshot der TestRunner-Datei:

Runner.java TestRunner-Skript fรผr Cucumber

Schritt 6) Erstellen Sie das Schrittdefinitionsskript.

Jetzt erstelle eine Schrittdefinition Paket und dann ein Steps.java Die Skriptdatei befindet sich darunter. In Steps.java schreiben wir Folgendes: Selenium Logik, die jedem Gherkin-Schritt zugeordnet ist.

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.");
    }
}

Die Klasse heiรŸt Shritte und Cucumber Die Annotationen ordnen jede Methode einem Feature-Datei-Schritt zu:

@Gegeben definiert die Methode zum ร–ffnen Firefox und starten Sie die Anwendung.

@Wann Definiert die Methode zur Eingabe von Benutzername und Passwort.

@Dann Definiert die Methode zum Zurรผcksetzen der Anmeldeinformationen.

Jede Methode gibt einfach eine Meldung in der Konsole aus.

Der folgende Screenshot zeigt das Steps.java-Skript und die Projektstruktur:

Steps.java-Skript und Projektstruktur in Eclipse

Hinweis: Eine Schrittdefinition ist der Code, den Sie mรถchten Cucumber wird ausgefรผhrt, wenn es mit einem Schritt in einer Feature-Datei รผbereinstimmt.

Schritt 7) Fรผhren Sie das Skript aus.

Fรผhren Sie dieses Skript aus der TestRunner-Datei (Runner.java) wie unten gezeigt aus.

Fรผhren Sie Runner.java aus, um zu starten Cucumber Test

Schritt 8) Analysieren Sie die Ausgabe.

Beim Ausfรผhren von Runner.java Cucumber Gibt denselben Text, der in Steps.java definiert ist, in der Konsole aus.

Konsolenausgabe von Cucumber Testausfรผhrung

Szenario 2: Anmeldedaten eingeben und Wert zurรผcksetzen

Hier geben wir die Zugangsdaten ein. Guru99 Demo-Anmeldeseite und Wert zurรผcksetzen.

Fรผr Szenario 2 mรผssen wir nur aktualisieren Steps.javaHier fรผgen wir die realen Daten hinzu. Selenium Code. Stellen Sie zunรคchst sicher, dass Selenium Die JAR-Datei wurde dem Projekt hinzugefรผgt.

Schichtannahme Selenium Die JAR-Datei befindet sich im Projektklassenpfad

Schritt 1) Aktualisieren Sie das Steps.java-Skript wie unten gezeigt.

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 des obigen Selenium Skript:

Szenario 2 Schritte.java mit Selenium Logik

Schritt 2) Fรผhren Sie das Skript aus.

Nach der Aktualisierung von Steps.java fรผhren Sie Runner.java aus.

Schritt 3) Analysieren Sie die Ausgabe. In der Ausgabe sehen Sie Folgendes:

  • Browser gestartet.
  • GuruDie Demo-Website der 99 Bank ist online.
  • Benutzername und Passwort werden auf der Anmeldeseite eingegeben.
  • Durch die Schaltflรคche โ€žZurรผcksetzenโ€œ werden die Werte gelรถscht.

Animation zu Szenario 2 zeigt Cucumber Selenium Testlauf

Szenario 3: Fรผhren Sie den Anmelde- und Zurรผcksetzungsvorgang mit 3 Datensรคtzen aus

Hier mรผssen wir beides aktualisieren. Steps.java und die Feature-Datei, um denselben Ablauf mit drei Sรคtzen von Anmeldeinformationen zu steuern.

Schritt 1) Aktualisieren Sie die Feature-Datei wie unten gezeigt.

Wir nutzen die Szenario-รœbersicht und Beispiele Syntax so Cucumber Das gleiche Szenario wird fรผr jede Datenzeile wiederholt.

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 |

Feature-Datei mit Szenario-รœbersicht und Beispieltabelle

Schritt 2) Aktualisieren Sie das Steps.java-Skript.

Hier aktualisieren wir die Methodensignaturen, sodass sie Parameter aus der Tabelle โ€žBeispieleโ€œ akzeptieren.

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

Die Datei Steps.java wurde mit parametrisierten Anmeldeinformationen aktualisiert.

Schritt 3) Fรผhre das aktualisierte Skript aus.

Der folgende Bildschirm zeigt eine erfolgreiche Ausfรผhrung und die fรผr jeden Datensatz benรถtigte Zeit.

Erfolgreiche Durchfรผhrung von Szenario 3 mit drei Datensรคtzen

Schritt 4) Analysieren Sie die Ergebnisse. Die folgenden Schritte werden fรผr jeden der 3 Datensรคtze wiederholt:

  • Browser gestartet.
  • GuruDie Demo-Website der 99 Bank ist online.
  • Benutzername und Passwort werden auf der Anmeldeseite eingegeben.
  • Durch die Schaltflรคche โ€žZurรผcksetzenโ€œ werden die Werte gelรถscht.

Szenario 3 Animation mit parametrisierter Darstellung Cucumber Testlauf

Hรคufig gestellte Fragen

Cucumber ist ein BDD-Framework, das in Gherkin geschriebene Szenarien ausfรผhrt. Selenium ist eine Browserautomatisierungsbibliothek, die Webseiten steuert. Cucumber interagiert nicht direkt mit Browsern โ€“ es ruft auf Selenium Schrittdefinitionen zur Durchfรผhrung der eigentlichen UI-Aktionen.

Cucumber Feature-Dateien verwenden Gherkin, eine leicht verstรคndliche, domรคnenspezifische Sprache, die Szenarien mithilfe von Schlรผsselwรถrtern wie Feature, Szenario, Gegeben, Wenn, Dann, Und, Aber, Szenario-Gliederung und Beispiele strukturiert. Gherkin ist sowohl fรผr technische als auch fรผr nicht-technische Stakeholder lesbar.

Verwenden Sie das Schlรผsselwort โ€žSzenarioรผbersichtโ€œ mit einer Beispieltabelle. Cucumber Fรผhrt dasselbe Szenario einmal pro Zeile aus und ersetzt dabei Platzhalter wie z. B. Und mit den Werten aus jeder Zeile. Dies ist das Standardmuster fรผr datengesteuerte Prozesse in Cucumber.

KI generiert Gherkin-Szenarien aus Benutzergeschichten, empfiehlt Schrittdefinitionen und behebt defekte Locatoren. SeleniumKI-Assistenten schlagen auรŸerdem Beispieldaten vor und kennzeichnen doppelte Szenarien, schwache Zusicherungen und veraltete Tests, wodurch die BDD-Suite auch bei Anwendungsรคnderungen wartungsfreundlich bleibt.

Ja. KI-Codierungsassistenten lesen Gherkin-Feature-Dateien und generieren passende Ergebnisse. Java oder Kotlin-Schrittdefinitionen, einschlieรŸlich Selenium WebDriver-Aufrufe, Locator-Strategien und Parameterbindung. Entwickler verfeinern dann den generierten Code, was den Boilerplate-Code beim Bootstrapping drastisch reduziert.ping neue BDD-Suiten.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: