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.

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:
- Ingeniero de Software y Analista de Negocios.
- Probador manual y probador de automatizaciรณn.
- 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.
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/.
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:
En la pรกgina siguiente, haga clic en la versiรณn 1.2.2:
En la siguiente pantalla, haga clic en Descargar para obtener el archivo 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.
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.
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.
Introduzca el nombre de la carpeta โCaracterรญsticasโ y haga clic en Finalizar.
Ahora crea un archivo de caracterรญsticas dentro de la carpeta Features llamado MiPrueba.caracterรญsticaEl proceso es similar al de crear una carpeta.
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:
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:
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.
Paso 8) Analizar la salida.
Al ejecutar Runner.java, Cucumber Imprime en la consola el mismo texto definido en Steps.java.
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.
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:
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.
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 |
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();
}
}
Paso 3) Ejecuta el script actualizado.
La siguiente pantalla muestra una ejecuciรณn exitosa y el tiempo que tardรณ cada conjunto 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.























