specflow selenium webdriver end end example
Ejemplo de extremo a extremo del uso de Specflow y Selenium Webdriver:
En esto Serie de formación gratuita Specflow , a Breve introducción sobre Specflow se dio en nuestro tutorial anterior.
En este artículo, veremos un ejemplo completo del uso de especificaciones BDD basadas en Specflow y las pruebas se ejecutarán a través de Selenium Webdriver.
Las pruebas podrían ser tan simples como probar la funcionalidad de inicio de sesión de una aplicación. Es solo eso, describiremos esas pruebas usando Specflow y las implementaciones de Step usarán el controlador y los comandos de Selenium y NUnit como marco de aserción.
También usaremos el corredor Specflow basado en NUnit (a diferencia de Specrun, que no es de código abierto e introduce un retraso aleatorio en la versión gratuita).
Lo que vas a aprender:
Tutorial de video: Specflow y Selenium
Vea el video tutorial sobre Specflow y Selenium:
cómo usar el comando buscar en unix
Empecemos.
Para comenzar, creemos un proyecto de prueba unitaria en Visual Studio e instalemos los siguientes requisitos previos:
# 1) Crea un proyecto de prueba unitaria
Instale el paquete Nuget para Nunit y Specflow.
|_+_|# 2) Instale Webdriver de Selenium para el navegador Chrome.
Esto también se puede instalar a través de la consola de Nuget Package Manager a través del siguiente comando.
|_+_|# 3) Instale las bibliotecas de Selenium Webdriver y Selenium Wait Helpers para agregar esperas de condiciones esperadas.
|_+_|# 4) Ahora elimine el archivo test.cs del proyecto que se crea automáticamente.
Estamos haciendo este paso para evitar confusiones, ya que usaremos archivos de características y archivos de definición de pasos para Specflow.
# 5) Cree carpetas para características y definiciones de pasos para almacenar archivos de implementación de características y definiciones de pasos.
Este no es un paso obligatorio, pero es útil para organizar las funciones y las implementaciones de los pasos en carpetas independientes.
# 6) Al final de los pasos anteriores, la estructura de la solución y packages.config deben verse como se muestra a continuación.
Implementación de funciones y pasos
Ahora comencemos con el archivo de funciones y la implementación del paso real.
Sobre la función - La función de muestra consistirá en probar / validar la funcionalidad de búsqueda del sitio web de Youtube. Buscaremos una palabra clave y afirmaremos que el usuario fue redirigido a la página de resultados de búsqueda.
Agregue un nuevo archivo de características y asígnele el nombre YoutubeSearchFeature.feature
Agregue un escenario de funcionalidad de búsqueda y una descripción de la función como se muestra a continuación:
|_+_|El escenario anterior espera que la prueba:
- Navegue al sitio web de Youtube: Esto requerirá un marco de automatización web como Selenium, que utilizará un Webdriver para navegar a una página web en un navegador.
- Busque una palabra clave: Este paso implicará buscar elementos de entrada y botones adecuados para introducir la palabra clave y ejecutar la búsqueda, respectivamente.
- Afirmar que se muestran los resultados de la búsqueda y que el usuario está en la página de resultados: Este paso implicará afirmaciones sobre la verificación de si el usuario llegó a la página correcta.
Ahora veamos las implementaciones de Step en cada uno de los pasos.
Antes de eso, entendamos cómo integraremos la lógica / código de Selenium en la definición de Specflow existente.
Selenio o cualquier otra herramienta (o stubs / simulacros / controladores de pruebas unitarias, etc.) son esencialmente una parte intermedia de la ejecución de pasos, pero la clave para comprender es la forma de integrar ambos marcos.
Specflow permite a los usuarios escribir especificaciones de prueba. No dicta la herramienta que se debe utilizar. Por lo tanto, el desarrollador de pruebas es libre de elegir tantas herramientas de prueba como desee, según el caso de uso que se esté resolviendo.
Para usar Selenium en este escenario, necesitamos lo siguiente:
- Una instancia de WebDriver (usaremos ChromeDriver para simplificar), que permitirá al usuario navegar realmente a la página web usando un navegador según la implementación del controlador.
- Pocas declaraciones de WebElement (y solo se pueden hacer como parte de implementaciones de Step) que son necesarias para interactuar con el usuario y pasar entradas y realizar acciones, etc.
- Pocas afirmaciones sobre el título de la ventana, las URL, etc., que se pueden ejecutar en la instancia del controlador.
Crearemos una instancia de ChromeWebdriver en el archivo Step Implementations.
Por lo tanto, creemos el archivo de definición de pasos. Como vimos en el último artículo, Specflow proporciona un mecanismo para generar automáticamente las definiciones de Paso (que luego se pueden personalizar / modificar según sea necesario).
- Navegue hasta el archivo de características, haga clic con el botón derecho y seleccione 'Generar definiciones de pasos'.
- Cree un nuevo archivo en la carpeta StepDefinitions como creamos anteriormente y nombre el archivo como YoutubeSearchFeatureSteps.cs
- Asegúrese de que todos los Pasos del escenario se hayan vinculado a las definiciones de Pasos de manera adecuada.
Sugerencia: modificación de las definiciones de pasos generadas automáticamente:
Ahora, si observa detenidamente, la definición de paso que se generó para nuestro paso de palabra clave de búsqueda, es decir, 'He ingresado a la India como palabra clave de búsqueda', el código generado automáticamente, no identifica / separa la palabra clave de búsqueda y, por lo tanto, no la parametriza.
|_+_|Pero esto no es lo que queremos. Necesitamos que la palabra clave de búsqueda esté parametrizada, de lo contrario, para cada búsqueda de palabra clave, tendremos que crear una definición de paso personalizada.
Entonces, veamos cómo modificar esta definición de Paso a una más genérica, lo que permitirá parametrizar la palabra clave de búsqueda. Esto se puede hacer mediante un simple comparador de expresiones regulares.
Consulte el ejemplo de código a continuación. Hemos reemplazado la palabra clave de búsqueda a través de un comparador de expresiones regulares, es decir, ' (.*) ”Lo que esto hará es que reemplazará el valor de cualquier palabra clave que pase del escenario y establecerá el valor de la palabra clave de búsqueda en el parámetro de entrada llamado“ searchString ”en el siguiente ejemplo de código.
|_+_|De esta manera, mantiene el código modular y evita el código repetitivo repetido para cada implementación de Paso.
Lógica de integración de selenio y definición de pasos
Ahora veamos la integración real de Selenium con Specflow. Una vez que se generen las definiciones de los pasos, ahora les agregaremos código para ejecutar el escenario de prueba real.
Veamos dónde podemos colocar e inicializar la instancia del controlador web de Selenium para que esté disponible durante la ejecución del escenario. Colocaremos el controlador como un campo privado de la clase vinculante que se generó. El controlador se inicializará como parte de la clase Constructor.
De esta manera, el controlador permanece inicializado durante todo el transcurso de la prueba, ya que solo tenemos un archivo de enlace para todos los pasos (y se inicializa antes de que comience la ejecución de la prueba).
También tenga en cuenta que también implementaremos el IDisposable interfaz, para eliminar la instancia del controlador después de la cual ya no es necesaria. Colocarlo en el método Dispose () garantizará que una vez que se elimine el objeto de la clase, la instancia del controlador también se pueda eliminar.
Así es como se ve el código para la declaración e inicialización de la instancia de WebDriver:
|_+_|Con lo anterior, la instancia del controlador se puede utilizar como parte de cualquier implementación de Step que sea parte de la ejecución del escenario.
Veamos ahora la implementación de pasos de cada escenario individual.
# 1) Organizar pasos:
|_+_|Ambos pasos implican interactuar con la instancia del controlador. El primer paso es abrir la ventana del navegador y navegar al sitio web de YouTube.
El segundo paso busca el botón de entrada de búsqueda e ingresa 'India' como palabra clave de búsqueda.
A continuación se muestra la implementación de ambos pasos:
|_+_|Para el primer paso, observe la afirmación de que asegura que la navegación a youtube fue exitosa al verificar el título de la ventana.
Nota: Puede haber varias formas de colocar afirmaciones en diferentes elementos web o propiedades del controlador, pero el objetivo final de este tutorial es simplemente ilustrar de la manera más simple.
En el segundo paso, hemos agregado una espera dinámica usando Condiciones esperadas lo que garantizará que el cuadro de búsqueda esté visible antes de que el código intente introducir la palabra clave de búsqueda.
Además, estamos almacenando searchString en un campo privado searchKeyword. Esto se hace para que la palabra clave de búsqueda se pueda utilizar también en otras implementaciones de Step.
Sugerencia: pasar datos a través de los pasos
Pasar / almacenar datos mediante este enfoque (es decir, a través de variables de clase) es uno de los medios a través del cual los datos se pueden compartir entre enlaces de paso.
Hay otras formas de hacer esto, así como el propio Specflow proporciona un objeto de diccionario dinámico llamado ScenarioContext. Veremos más detalles sobre esto en los próximos artículos.
# 2) Paso de acción
|_+_|Ahora veamos la acción real, que es hacer clic en el botón Buscar. El archivo de implementación del paso buscará el botón de búsqueda y hará clic en él para ejecutar el paso del escenario.
El código para este paso se ve como se muestra a continuación:
|_+_|# 3) Finalmente, el paso de afirmación:
|_+_|En este paso, solo estamos verificando desde las propiedades del controlador si la URL y el título de la página contienen la palabra clave de búsqueda o no.
El código para este paso se muestra a continuación:
|_+_|Ejecución
Ahora, intentemos ejecutar el escenario y ver los resultados. Una vez que se ejecuta el escenario, todos los pasos del escenario se ejecutarán secuencialmente. La prueba abrirá un navegador, navegará a un sitio web y luego realizará alguna acción.
El resultado de la prueba se puede ver haciendo clic en el botón 'Salida' del resumen de la prueba que muestra el éxito / fracaso de cada paso individual.
Consejos
Pasos intermedios fallidos
En caso de que un Escenario tenga pasos intermedios que fallan, tenga en cuenta que en esos escenarios Specflow simplemente no ejecutará los Pasos restantes de ese Escenario y marcará el resultado de la prueba como fallado.
cómo encontrar la clave de red en el enrutador
Ejecución de pruebas con NUnit Adapter
Para este ejemplo, hemos ejecutado nuestras pruebas utilizando el ejecutor de pruebas Specflow.NUnit (que habíamos instalado a través de Nuget Package Manager).
Esto es diferente en algunos aspectos, como se muestra a continuación, del corredor Specrun que habíamos utilizado en el artículo anterior.
- El corredor Specflow.NUnit es de código abierto.
- No introduce ningún retraso en la ejecución de las pruebas.
Conclusión
En este artículo, vimos un ejemplo completo de Integración de Selenium con el marco de Specflow a través de un escenario de prueba simple de una búsqueda de video en la aplicación de Youtube.
Al integrar Selenium, también analizamos cómo compartir datos a través de diferentes enlaces a través de campos de clases privados. También cubrimos la ejecución de la prueba en NUnit runner Vs the Specrun runner y comparamos ambos en detalle.
Archivos de código
YoutubeSearchFeature.feature
|_+_|YoutubeSearchFeatureSteps.cs
|_+_|¡Mire nuestro próximo tutorial para obtener más información sobre enlaces compartidos y con ámbito, ganchos y reutilización de pasos en Specflow!
PREV Tutorial | SIGUIENTE Tutorial
Lectura recomendada
- Tutorial de Cucumber Selenium: Integración de Cucumber Java Selenium WebDriver
- Introducción a Selenium WebDriver - Tutorial de Selenium n. ° 8
- Integración de Jenkins con Selenium WebDriver: Tutorial paso a paso
- Implementación de nuestro primer script de WebDriver - Tutorial de Selenium WebDriver # 10
- Cómo manejar alertas / ventanas emergentes en Selenium WebDriver - Tutorial de Selenium n. ° 16
- Configuración e instalación completa de WebDriver con Eclipse - Tutorial de Selenium n. ° 9
- Verifique la visibilidad de los elementos web usando varios tipos de comandos de WebDriver - Tutorial de Selenium n. ° 14
- Tutorial de GeckoDriver Selenium: Cómo usar GeckoDriver en proyectos de Selenium