Selenium con Cucumber (Tutorial sul framework BDD)

โšก Riepilogo intelligente

Selenium con Cucumber forma un potente framework di sviluppo guidato dal comportamento (BDD) che combina la sintassi Gherkin in inglese semplice con Selenium Automazione con WebDriver. Questa esercitazione illustra i prerequisiti, analizza tre scenari pratici e mostra come i file feature, le definizioni dei passaggi e una classe TestRunner si integrano per eseguire i test del browser.

  • ???? Definizione di base: Cucumber รจ uno strumento di test BDD che descrive il comportamento dell'applicazione in un linguaggio semplice utilizzando Gherkin e Selenium gestisce le azioni del browser sottostanti.
  • ๐Ÿค Ponte degli stakeholder: Cucumber Collega analisti aziendali, tester manuali, ingegneri dell'automazione e sviluppatori attraverso una specifica di test condivisa e leggibile.
  • ๐Ÿ“ฆ Barattoli necessari: Selenium autonomo, Cucumber-nucleo, Cucumber-Giava, Cucumber-junit, Cetriolo, JUnite Hamcrest-core costituiscono l'insieme minimo di dipendenze.
  • ๐Ÿงฑ Tre file di progetto: Un file .feature con scenari, una classe Steps.java per la definizione dei passaggi e un TestRunner Runner.java con @CucumberOpzioni colla.
  • ๐Ÿ” Test basati sui dati: Utilizza le tabelle Scenario Outline ed Examples per eseguire lo stesso flusso con piรน set di credenziali in un'unica esecuzione.

Selenium con Cucumber (Tutorial sul framework BDD)

In questo tutorial imparerai come integrare Cucumber con Selenium WebDriver per costruire un framework di sviluppo guidato dal comportamento (BDD) che sia leggibile, manutenibile e basato sui dati.

Cosa รจ Cucumber?

Cucumber รจ uno strumento di test che supporta lo sviluppo guidato dal comportamento (BDD). Descrive il comportamento di un'applicazione in un semplice testo in inglese utilizzando il linguaggio Gherkin, che consente anche ai non sviluppatori di contribuire alle specifiche di test senza dover imparare un linguaggio di programmazione. Scopri di piรน nella nostra Cucumber lezione.

Cosa รจ Selenium?

Selenium รจ uno strumento di automazione utilizzato per Test di funzionalitร  di applicazioni basate sul web. Selenium supporta piรน linguaggi di programmazione tra cui Java, Rubino, Pythone C#, il che lo rende ideale per team con background tecnici misti. Scopri di piรน nella nostra Selenium lezione.

Perchรฉ usare Cucumber con Selenium?

Cucumber and Selenium sono due delle tecnologie di test piรน diffuse. La maggior parte delle organizzazioni le utilizza giร  Selenium per i test funzionali e voglio aggiungere strati Cucumber in cima perchรฉ Cucumber rende facile leggere e comprendere il flusso dell'applicazione.

Cucumber si basa sul quadro di sviluppo guidato dal comportamento che funge da ponte tra i seguenti ruoli:

  1. Ingegnere informatico e analista aziendale.
  2. Tester manuale e tester di automazione.
  3. Tester manuale e sviluppatori.

Migliori Cucumber Anche il framework BDD aiuta i clienti a comprendere il codice dell'applicazione Perchรฉ utilizza il linguaggio Gherkin, che รจ in testo semplice. Chiunque nell'organizzazione puรฒ seguire il comportamento del software. La sintassi di Gherkin รจ in un inglese semplice e leggibile, il che rende la specifica accessibile anche a lettori non tecnici.

Cucumber con Selenium Panoramica del framework BDD

Prerequisiti per l'utilizzo Cucumber con Selenium

Prima di iniziare il Cucumber-Selenium Per l'integrazione, sono necessari i seguenti elementi:

Selenium file jar:

  • Selenium-server-autonomo

Puoi scaricarli da https://www.selenium.dev/downloads/.

Selenium pagina di download per i file jar

File Jar per Cucumber:

  • Cucumber-nucleo
  • Cucumber-html
  • Cobertura copertura del codice
  • Cucumber-Giava
  • Cucumber-giusto
  • Cucumber-jvm-deps
  • Cucumberrefertazione
  • Nucleo di Hamcrest
  • Cetriolino
  • JUnit

Puoi scaricarli da https://mvnrepository.com/search?q=CucumberDovrai cercare ciascun file jar e scaricarli uno per uno.

Ad esempio, ecco come scaricare uno dei file jar, il โ€œCucumberlibreria "core".

Fai clic sul link di download qui sopra. Verrai reindirizzato al sito del repository Maven. Ora cerca il jar specifico (in questo caso "Cucumber "Nucleo") come mostrato nello screenshot qui sotto:

Ricerca di Cucumber File JAR principale nel repository Maven

Nella pagina successiva, clicca sulla versione 1.2.2:

Seleziona Cucumber Versione principale 1.2.2 in Maven

Nella schermata successiva, fai clic su Scarica per scaricare il Cucumber File jar principale:

Scarica la Cucumber File jar principale

Nota: Per comoditร , abbiamo incluso i file jar Maven necessari Qui.Questi file JAR potrebbero diventare obsoleti e incompatibili nel tempo, quindi consigliamo di scaricarli autonomamente utilizzando il metodo descritto sopra.

Test di automazione utilizzando Cucumber con Selenium

Vediamo come utilizzare Cucumber con Selenium Passo dopo passo. Qui analizzeremo tre scenari:

  • Scenario 1: stampa del testo nella console.
  • Scenario 2: Inserire le credenziali di accesso e reimpostare il valore.
  • Scenario 3: Inserire le credenziali di accesso su Guru99 e reimposta il valore โ€” ripetuto per 3 serie di dati.

Scenario 1: Stampa del testo nella console

In questo scenario, stampiamo semplicemente il testo nella console usando Cucumber.

Passo 1) Crea un progetto in Eclipse.

Creare un Java progetto con il nome "CucumberConSelenium". come mostrato nello screenshot qui sotto.

Crea
 CucumberConSelenium Java progetto in Eclipse

Java configurazione del nome del progetto in Eclipse

Passo 2) Aggiungi i file jar al progetto.

Fare clic con il pulsante destro del mouse sul progetto > Proprietร  > Java Percorso di compilazione. Aggiungi tutte le librerie che hai scaricato in precedenza.

Aggiungi Cucumber and Selenium file jar da Java Costruisci percorso

Passo 3) Crea un file di funzionalitร .

Per creare un file di funzionalitร , crea innanzitutto una cartella "Features" come mostrato nello screenshot qui sotto.

Crea la cartella Funzionalitร  in Eclipse progetto

Inserisci il nome della cartella "Funzionalitร " e fai clic su Fine.

Configura il nome della cartella Funzionalitร  in Eclipse

La cartella delle funzionalitร  รจ visibile in Esplora progetti.

Ora crea un file di funzionalitร  all'interno della cartella Funzionalitร  denominato MyTest.featureIl procedimento รจ simile alla creazione di una cartella.

Crea il file MyTest.feature nella cartella Features

Nota: Potrebbe essere necessario installare il file Cucumber Eclipse Installa prima il plugin. Vai su Aiuto โ†’ Installa nuovo software e incolla il link. http://cucumber.github.io/cucumber-eclipse/update-site/e installalo.

Passo 4) Scrivi gli scenari.

Le righe seguenti sono scritte in MyTest.feature utilizzando il linguaggio Gherkin:

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 Spiegazione

Riga 1) Definisce la funzionalitร  aziendale.

Riga 2) Definisce uno scenario da testare.

Riga 3) Definisce la precondizione (Dato).

Riga 4) Definisce l'azione da eseguire (Quando).

Riga 5) Definisce l'esito o il risultato atteso (Allora).

Passo 5) Scrivi la Selenium Script TestRunner per il Cucumber progettazione del framework.

Creare un TestRunner pacchetto e poi un Runner.java file di classe al suo interno.

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
{

}

Nel sopra Cucumber Java ad esempio, eseguiamo il prova del cetriolo utilizzando le seguenti annotazioni:

@Corri con() dice JUnit Informazioni sulla classe test runner che avvia l'esecuzione dei nostri test.

@CucumberOpzioni() Imposta le proprietร  di test, come il percorso del file delle funzionalitร  e il pacchetto di collegamento della definizione dei passaggi.

Screenshot del file TestRunner:

Runner.java Script TestRunner per Cucumber

Passo 6) Creare lo script di definizione del passaggio.

Ora crea un Definizione del passaggio pacchetto e poi un Steps.java file script sotto di esso. All'interno di Steps.java scriviamo il Selenium logica che mappa ogni passaggio di Gherkin.

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

La classe si chiama Passaggi e Cucumber Le annotazioni associano ciascun metodo a una fase del file di funzionalitร :

@Dato definisce il metodo per aprire Firefox e avviare l'applicazione.

@Quando Definisce il metodo per inserire nome utente e password.

@Poi Definisce il metodo per reimpostare le credenziali.

Ciascun metodo si limita a stampare un messaggio sulla console.

Lo screenshot qui sotto mostra lo script Steps.java e la struttura ad albero del progetto:

Passaggi.java script e albero del progetto in Eclipse

Nota: Una definizione di passo รจ il codice che desideri Cucumber da eseguire quando corrisponde a una fase del file feature.

Passo 7) Esegui lo script.

Eseguire questo script dal file TestRunner (Runner.java) come mostrato di seguito.

Eseguire Runner.java per avviare Cucumber test

Passo 8) Analizzare l'output.

All'esecuzione di Runner.java, Cucumber stampa nella console lo stesso testo definito in Steps.java.

Output della console da Cucumber esecuzione del test

Scenario 2: Inserire le credenziali di accesso e reimpostare il valore

Qui inseriamo le credenziali su GuruPagina di accesso demo 99 e reimposta il valore.

Per lo scenario 2 dobbiamo solo aggiornare Steps.java. Qui aggiungiamo il vero Selenium codice. Innanzitutto, assicurati che Selenium Il file jar viene aggiunto al progetto.

Confermare Selenium Il file jar si trova nel classpath del progetto

Passo 1) Aggiorna lo script Steps.java come mostrato di seguito.

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 di quanto sopra Selenium sceneggiatura:

Scenario 2 Steps.java con Selenium logica

Passo 2) Esegui lo script.

Dopo aver aggiornato Steps.java, esegui Runner.java.

Passo 3) Analizza l'output. Nell'output vedrai quanto segue:

  • Browser avviato.
  • Guruรˆ stato aperto il sito demo di 99 Bank.
  • Il nome utente e la password vengono inseriti nella pagina di accesso.
  • Il pulsante Reset cancella i valori.

Animazione dello scenario 2 che mostra Cucumber Selenium prova

Scenario 3: Eseguire il flusso di accesso e ripristino con 3 set di dati

Qui dobbiamo aggiornare entrambi Steps.java e il file delle funzionalitร  per gestire lo stesso flusso con tre set di credenziali.

Passo 1) Aggiorna il file delle funzionalitร  come mostrato di seguito.

Usiamo il Schema dello scenario and Esempi sintassi quindi Cucumber ripete lo stesso scenario per ogni riga di dati.

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 |

File delle funzionalitร  con schema degli scenari ed esempi.

Passo 2) Aggiorna lo script Steps.java.

Qui aggiorniamo le firme dei metodi in modo che accettino parametri dalla tabella Esempi.

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

File Steps.java aggiornato con credenziali parametrizzate.

Passo 3) Eseguire lo script aggiornato.

La schermata sottostante mostra un'esecuzione riuscita e il tempo impiegato per ciascun set di dati.

Esecuzione riuscita dello scenario 3 con tre set di dati

Passo 4) Analizzare l'output. I seguenti passaggi si ripetono per ciascuno dei 3 set di dati:

  • Browser avviato.
  • Guruรˆ stato aperto il sito demo di 99 Bank.
  • Il nome utente e la password vengono inseriti nella pagina di accesso.
  • Il pulsante Reset cancella i valori.

Scenario 3 animazione che mostra parametri Cucumber prova

DOMANDE FREQUENTI

Cucumber รจ un framework BDD che esegue scenari scritti in Gherkin. Selenium รจ una libreria di automazione del browser che gestisce le pagine web. Cucumber non interagisce direttamente con i browser โ€” chiama Selenium definizioni dei passaggi per eseguire le azioni effettive dell'interfaccia utente.

Cucumber I file delle funzionalitร  utilizzano Gherkin, un linguaggio specifico di dominio in inglese semplice che organizza gli scenari con parole chiave come Funzionalitร , Scenario, Dato, Quando, Allora, E, Ma, Schema dello scenario ed Esempi. Gherkin รจ leggibile sia da interlocutori tecnici che non tecnici.

Utilizzare la parola chiave Scenario Outline con una tabella di esempi. Cucumber esegue lo stesso scenario una volta per riga, sostituendo i segnaposto come E con i valori di ogni riga. Questo รจ il modello standard basato sui dati in Cucumber.

L'IA genera scenari Gherkin dalle storie utente, raccomanda definizioni di passaggi, ripara i localizzatori rotti in Seleniume suggerisce dati di esempio. Gli assistenti IA segnalano anche scenari duplicati, asserzioni deboli e test obsoleti, il che mantiene la suite BDD gestibile al variare dell'applicazione.

Sรฌ. Gli assistenti di programmazione AI leggono i file delle funzionalitร  di Gherkin e generano corrispondenze Java o definizioni dei passaggi Kotlin, tra cui Selenium Chiamate WebDriver, strategie di localizzazione e associazione dei parametri. Gli sviluppatori perfezionano quindi il codice generato, che riduce drasticamente il codice ripetitivo durante il bootstrap.ping nuove suite BDD.

Riassumi questo post con: