Selenium con Cucumber (Tutorial del marco BDD)

โšก Resumen inteligente

Selenium con Cucumber forma un marco de desarrollo impulsado por el comportamiento (BDD) potente que combina la sintaxis Gherkin en inglรฉs sencillo con Selenium Automatizaciรณn con WebDriver. Este tutorial explica los requisitos previos, presenta tres escenarios prรกcticos y muestra cรณmo se integran los archivos de caracterรญsticas, las definiciones de pasos y una clase TestRunner para ejecutar pruebas de navegador.

  • ???? Definiciรณn bรกsica: Cucumber es una herramienta de prueba BDD que describe el comportamiento de la aplicaciรณn en lenguaje natural utilizando Gherkin, y Selenium controla las acciones del navegador subyacentes.
  • ๐Ÿค Puente de partes interesadas: Cucumber Conecta a analistas de negocio, probadores manuales, ingenieros de automatizaciรณn y desarrolladores a travรฉs de una especificaciรณn de pruebas compartida y legible.
  • ๐Ÿ“ฆ Frascos necesarios: Selenium autรณnomo, Cucumber-centro, Cucumber-Java, Cucumber-junit, Gherkin, JUnity Hamcrest-core forman el conjunto mรญnimo de dependencias.
  • ๐Ÿงฑ Tres archivos de proyecto: Un archivo .feature con escenarios, una clase de definiciรณn de pasos Steps.java y un TestRunner Runner.java con @CucumberOpciones de pegamento.
  • ๐Ÿ” Pruebas basadas en datos: Utilice las tablas Esquema de escenario y Ejemplos para ejecutar el mismo flujo con varios conjuntos de credenciales en una sola ejecuciรณn.

Selenium  con  Cucumber (Tutorial del marco BDD)

En este tutorial, aprenderรก cรณmo integrar Cucumber con Selenium WebDriver permite construir un marco de desarrollo basado en el comportamiento (BDD, por sus siglas en inglรฉs) que sea legible, mantenible y basado en datos.

ยฟQuรฉ es Cucumber?

Cucumber es una herramienta de prueba que admite el Desarrollo Dirigido por Comportamiento (BDD). Describe el comportamiento de una aplicaciรณn en texto sencillo en inglรฉs utilizando el lenguaje Gherkin, lo que permite que personas sin conocimientos de programaciรณn contribuyan a las especificaciones de prueba sin necesidad de aprender un lenguaje de programaciรณn. Obtenga mรกs informaciรณn en nuestra Cucumber tutoriales.

ยฟQuรฉ es Selenium?

Selenium es una herramienta de automatizaciรณn utilizada para Prueba de funcion de aplicaciones basadas en la web. Selenium admite mรบltiples lenguajes de programaciรณn, incluidos Java, Rubรญ, Pythony C#, lo que lo convierte en una opciรณn natural para equipos con diferentes niveles de conocimientos tรฉcnicos. Obtenga mรกs informaciรณn en nuestra Selenium tutoriales.

Por quรฉ usar Cucumber con Selenium?

Cucumber y Selenium son dos de las tecnologรญas de prueba mรกs adoptadas. La mayorรญa de las organizaciones ya utilizan Selenium para pruebas funcionales y quiero agregar capas Cucumber encima porque Cucumber Facilita la lectura y comprensiรณn del flujo de la aplicaciรณn..

Cucumber se basa en el marco de Desarrollo Dirigido por el Comportamiento que actรบa como un puente entre los siguientes roles:

  1. Ingeniero de Software y Analista de Negocios.
  2. Probador manual y probador de automatizaciรณn.
  3. Probador manual y desarrolladores.

El Cucumber Marco BDD tambiรฉn ayuda a los clientes a comprender el cรณdigo de la aplicaciรณn. Porque utiliza el lenguaje Gherkin, que estรก escrito en texto plano. Cualquier persona de la organizaciรณn puede comprender el comportamiento del software. La sintaxis de Gherkin estรก escrita en un inglรฉs sencillo y legible, lo que hace que la especificaciรณn sea accesible para lectores no tรฉcnicos.

Cucumber  con  Selenium Descripciรณn general del marco BDD

Requisitos previos para su uso Cucumber con Selenium

Antes de que comencemos el Cucumber-Selenium Para la integraciรณn, necesitas los siguientes elementos:

Selenium archivos jar:

  • Selenium-servidor-independiente

Puedes descargarlos en https://www.selenium.dev/downloads/.

Selenium Pรกgina de descargas de archivos jar

Archivos Jar para Cucumber:

  • Cucumber-nรบcleo
  • Cucumber-html
  • Cobertura cobertura de cรณdigo
  • Cucumber-Java
  • Cucumber-Junito
  • Cucumber-jvm-deps
  • Cucumber-informes
  • Nรบcleo de Hamcrest
  • Pepinillo
  • JUnit

Puedes descargarlos en https://mvnrepository.com/search?q=CucumberDeberรกs buscar cada archivo jar y descargarlos uno por uno.

Por ejemplo, aquรญ se muestra cรณmo descargar uno de los archivos jar, el โ€œCucumberBiblioteca "core".

Haz clic en el enlace de descarga de arriba. Te redirigirรก al sitio del repositorio Maven. Ahora busca el jar especรญfico (en este caso โ€œCucumber "Nรบcleo" como se muestra en la captura de pantalla a continuaciรณn:

Bรบsqueda de Cucumber JAR principal en el repositorio Maven

En la pรกgina siguiente, haga clic en la versiรณn 1.2.2:

Seleccionar Cucumber Versiรณn principal 1.2.2 en Maven

En la siguiente pantalla, haga clic en Descargar para obtener el archivo Cucumber Archivo jar principal:

Descargue nuestra Cucumber Archivo jar principal

Nota: Para mayor comodidad, hemos agrupado los archivos jar de Maven necesarios. aquรญEstos archivos JAR pueden quedar obsoletos e incompatibles con el tiempo, por lo que recomendamos descargarlos usted mismo utilizando el mรฉtodo descrito anteriormente.

Pruebas de automatizaciรณn usando Cucumber con Selenium

Vamos a explicar cรณmo usarlo Cucumber con Selenium paso a paso. Aquรญ cubriremos tres escenarios:

  • Escenario 1: imprimir texto en la consola.
  • Escenario 2: Introduzca las credenciales de inicio de sesiรณn y restablezca el valor.
  • Escenario 3: Introduzca las credenciales de inicio de sesiรณn en Guru99 y restablecer el valor; repitiรณ el proceso para 3 conjuntos de datos.

Escenario 1: Imprimir texto en la consola

En este escenario, simplemente imprimimos texto en la consola usando Cucumber.

Paso 1) Crear un proyecto en Eclipse.

Crรฉar un Java proyecto con el nombre "CucumberCon Selenium" como se muestra en la captura de pantalla a continuaciรณn.

Crear CucumberCon Selenium Java proyecto en Eclipse

Java configuraciรณn del nombre del proyecto en Eclipse

Paso 2) Agrega los archivos jar al proyecto.

Haga clic con el botรณn derecho en el proyecto > Propiedades > Java Ruta de compilaciรณn. Agregue todas las bibliotecas que descargรณ anteriormente.

Agregar  Cucumber y Selenium archivos jar a Java Construir camino

Paso 3) Crea un archivo de caracterรญsticas.

Para crear un archivo de caracterรญsticas, primero cree una carpeta llamada "Features" como se muestra en la captura de pantalla a continuaciรณn.

Crear carpeta de caracterรญsticas en Eclipse Antecedentes

Introduzca el nombre de la carpeta โ€œCaracterรญsticasโ€ y haga clic en Finalizar.

Configure el nombre de la carpeta de caracterรญsticas en Eclipse

La carpeta de caracterรญsticas es visible en el explorador de proyectos.

Ahora crea un archivo de caracterรญsticas dentro de la carpeta Features llamado MiPrueba.caracterรญsticaEl proceso es similar al de crear una carpeta.

Crea el archivo MyTest.feature en la carpeta Features.

Nota: Es posible que necesite instalar el Cucumber Eclipse Primero, instala el plugin. Ve a Ayuda โ†’ Instalar nuevo software y pega el enlace. http://cucumber.github.io/cucumber-eclipse/update-site/e instรกlalo.

Paso 4) Escribe los escenarios.

Las lรญneas que aparecen a continuaciรณn estรกn escritas en MiPrueba.caracterรญstica Utilizando el lenguaje 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 Explicaciรณn

Lรญnea 1) Define la funcionalidad del negocio.

Lรญnea 2) Define un escenario para probar.

Lรญnea 3) Define la condiciรณn previa (dada).

Lรญnea 4) Define la acciรณn a realizar (Cuรกndo).

Lรญnea 5) Define el resultado esperado (Entonces).

Paso 5) Escribe el Selenium Script de TestRunner para el Cucumber diseรฑo de marco.

Crรฉar un Corredor de pruebas paquete y luego un Corredor.java archivo de clase debajo.

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
{

}

En lo anterior Cucumber Java por ejemplo, ejecutamos el prueba de pepino utilizando las siguientes anotaciones:

@Corre con() decirles JUnit acerca de la clase ejecutora de pruebas que comienza a ejecutar nuestras pruebas.

@CucumberOpciones() Establece propiedades de prueba como la ruta del archivo de caracterรญsticas y el paquete de uniรณn de la definiciรณn de pasos.

Captura de pantalla del archivo TestRunner:

Script Runner.java TestRunner para Cucumber

Paso 6) Cree el script de definiciรณn de pasos.

Ahora crea un Definiciรณn de paso paquete y luego un Pasos.java archivo de script debajo. Dentro de Steps.java escribimos el Selenium lรณgica que se corresponde con cada paso de 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 clase se llama pasos, y Cucumber Las anotaciones asignan cada mรฉtodo a un paso del archivo de caracterรญsticas:

@Dado define el mรฉtodo para abrir Firefox y ejecutar la aplicaciรณn.

@Cuando Define el mรฉtodo para introducir el nombre de usuario y la contraseรฑa.

@Entonces Define el mรฉtodo para restablecer las credenciales.

Cada mรฉtodo simplemente imprime un mensaje en la consola.

La siguiente captura de pantalla muestra el script Steps.java y el รกrbol del proyecto:

Pasos. Script java y รกrbol del proyecto en Eclipse

Nota: Una definiciรณn de paso es el cรณdigo que desea Cucumber para ejecutarse cuando coincida con un paso de archivo de caracterรญsticas.

Paso 7) Ejecute el script.

Ejecute este script desde el archivo TestRunner (Runner.java) como se muestra a continuaciรณn.

Ejecuta Runner.java para ejecutar Cucumber compruรฉbalo

Paso 8) Analizar la salida.

Al ejecutar Runner.java, Cucumber Imprime en la consola el mismo texto definido en Steps.java.

Salida de la consola desde Cucumber ejecuciรณn de pruebas

Escenario 2: Introduzca las credenciales de inicio de sesiรณn y restablezca el valor.

Aquรญ ingresamos las credenciales en el Guru99 pรกgina de inicio de sesiรณn de demostraciรณn y restablecer el valor.

Para el escenario 2 solo necesitamos actualizar Pasos.javaAquรญ aรฑadimos lo real Selenium cรณdigo. Primero, asegรบrese de que el Selenium El archivo jar se agrega al proyecto.

Confirmar Selenium El archivo jar se encuentra en la ruta de clases del proyecto.

Paso 1) Actualice el script Steps.java como se muestra a continuaciรณn.

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

Captura de pantalla de lo anterior Selenium script:

Pasos del escenario 2.java con Selenium lรณgica

Paso 2) Ejecute el script.

Despuรฉs de actualizar Steps.java, ejecute Runner.java.

Paso 3) Analice el resultado. En el resultado verรก lo siguiente:

  • Navegador iniciado.
  • GuruSe inaugura el sitio de demostraciรณn del banco 99.
  • El nombre de usuario y la contraseรฑa se introducen en la pรกgina de inicio de sesiรณn.
  • El botรณn de reinicio borra los valores.

Animaciรณn del escenario 2 que muestra Cucumber Selenium prueba de funcionamiento

Escenario 3: Ejecutar el flujo de inicio de sesiรณn y restablecimiento con 3 conjuntos de datos.

Aquรญ necesitamos actualizar ambos Pasos.java y el archivo de caracterรญsticas para controlar el mismo flujo con tres conjuntos de credenciales.

Paso 1) Actualice el archivo de caracterรญsticas como se muestra a continuaciรณn.

Usamos la Esquema del escenario y Ejemplos sintaxis asรญ Cucumber Repite el mismo escenario en cada fila de datos.

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 |

Archivo de caracterรญsticas con esquema de escenario y tabla de ejemplos

Paso 2) Actualiza el script Steps.java.

Aquรญ actualizamos las firmas de los mรฉtodos para que acepten parรกmetros de la tabla de ejemplos.

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

Se actualizรณ el archivo Steps.java con credenciales parametrizadas.

Paso 3) Ejecuta el script actualizado.

La siguiente pantalla muestra una ejecuciรณn exitosa y el tiempo que tardรณ cada conjunto de datos.

Ejecuciรณn exitosa del escenario 3 con tres conjuntos de datos.

Paso 4) Analice los resultados. Los siguientes pasos se repiten para cada uno de los 3 conjuntos de datos:

  • Navegador iniciado.
  • GuruSe inaugura el sitio de demostraciรณn del banco 99.
  • El nombre de usuario y la contraseรฑa se introducen en la pรกgina de inicio de sesiรณn.
  • El botรณn de reinicio borra los valores.

Animaciรณn del escenario 3 que muestra parรกmetros Cucumber prueba de funcionamiento

Preguntas Frecuentes

Cucumber Es un marco de trabajo BDD que ejecuta escenarios escritos en Gherkin. Selenium Es una biblioteca de automatizaciรณn de navegadores que controla las pรกginas web. Cucumber no interactรบa directamente con los navegadores, sino que llama Selenium Definiciones de pasos para realizar las acciones reales de la interfaz de usuario.

Cucumber Los archivos de caracterรญsticas utilizan Gherkin, un lenguaje especรญfico de dominio en inglรฉs sencillo que organiza los escenarios con palabras clave como Caracterรญstica, Escenario, Dado, Cuando, Entonces, Y, Pero, Esquema del escenario y Ejemplos. Gherkin es legible tanto para usuarios tรฉcnicos como no tรฉcnicos.

Utilice la palabra clave Esquema de escenario con una tabla de ejemplos. Cucumber ejecuta el mismo escenario una vez por fila, sustituyendo marcadores de posiciรณn como y con los valores de cada fila. Este es el patrรณn estรกndar basado en datos en Cucumber.

La IA genera escenarios Gherkin a partir de historias de usuario, recomienda definiciones de pasos y repara localizadores rotos en Seleniumy sugiere datos de ejemplo. Los asistentes de IA tambiรฉn seรฑalan escenarios duplicados, aserciones dรฉbiles y pruebas obsoletas, lo que mantiene el conjunto de herramientas BDD mantenible a medida que la aplicaciรณn cambia.

Sรญ. Los asistentes de codificaciรณn de IA leen archivos de caracterรญsticas Gherkin y generan coincidencias. Java o definiciones de pasos de Kotlin, incluyendo Selenium Llamadas a WebDriver, estrategias de localizaciรณn y enlace de parรกmetros. Los desarrolladores luego refinan el cรณdigo generado, lo que reduce drรกsticamente el cรณdigo repetitivo cuando se inicia.ping Nuevas suites BDD.

Resumir este post con: