No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Cypress Avanzado

Curso de Cypress Avanzado

Javier Fuentes Mora

Javier Fuentes Mora

Usando xpaths

6/29
Recursos

¿Cómo trabajar con XPath y complementos en Cypress?

Trabajar de manera eficiente con Cypress y sus complementos es esencial para realizar pruebas automatizadas efectivas. En esta clase, te enseñaremos a instalar y configurar un complemento específico para trabajar con XPath, una necesidad crucial, sobre todo cuando los selectores CSS convencionales no son suficientes. Exploraremos su instalación, configuraciones básicas, y diferenciaremos el uso entre XPath y selectores CSS en Cypress.

¿Cómo instalar y configurar el complemento Cypress XPath?

El primer paso para aprovechar las capacidades de XPath en Cypress es la instalación de un complemento específico. El complemento que instalaremos se llama Cypress-XPath. Aquí tienes cómo realizarlo:

  1. Instalación del plugin: Ejecuta el siguiente comando en tu terminal para instalar el complemento:

    npm install -D cypress-xpath
    
  2. Configuración post-instalación: Luego de la instalación, es necesario importar el complemento en el archivo de soporte de Cypress. Esto asegura que Cypress reconozca los comandos de XPath.

    • Dirígete a la carpeta support dentro del directorio de Cypress.

    • Abre el archivo e importa el complemento:

      import 'cypress-xpath';
      

¿Cómo comparar los selectores CSS con los XPath?

Ahora que tenemos nuestro complemento instalado y configurado, es el momento de compararlo frente a los selectores CSS estándar para entender por qué y cuándo es ventajoso utilizar XPath.

Uso de un selector CSS

Para seleccionar un elemento con un CSS selector en Cypress:

cy.visit('/url-de-tu-pagina');
cy.get('div.container > h1').contains('Bulbasaur');

Este método obtiene un elemento h1 específico dentro de un contenedor div, verificando que el texto sea "Bulbasaur".

Uso de XPath

XPath ofrece una mayor flexibilidad, como se muestra en este ejemplo:

cy.xpath("//h1[contains(text(), 'Bulbasaur')]");

En este caso, seleccionamos cualquier elemento h1 que contenga el texto "Bulbasaur". La syntax es más legible y poderosa para ciertos contextos donde los CSS selectors pueden ser limitantes.

¿Cuál es la función de los complementos en Cypress?

Los complementos en Cypress no solo extienden su funcionalidad sino que también mejoran la legibilidad y mantenimiento del código. Aunque Cypress, por defecto, no soporte XPath, los complementos de la comunidad amplían sus capacidades para satisfacer necesidades específicas.

  • Beneficios de usar complementos:
    • Permiten el uso de funcionalidades no nativas de Cypress, enriqueciendo así las opciones de prueba.
    • Mejoran la legibilidad del código y facilitan su mantenimiento.
    • Creación de plugins personalizados: Puedes desarrollar tus propios complementos para satisfacer necesidades especiales en tus flujos de trabajo.

Recomendaciones y próximos pasos

Te alentamos a familiarizarte más con los complementos disponibles y compartir en los comentarios de qué maneras los has implementado en tus proyectos. No olvides que el manejo de XPath es vasto y de gran utilidad, especialmente en estructuras HTML complejas.

Nuestra próxima clase abordará cómo manejar los "flaky tests", pruebas que fallan ocasionalmente, y las técnicas para evitar estos problemas. ¡No te lo pierdas!

Aportes 4

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Cypress-xpath ha sido deprecado

si tienes problemas al instalar el plugin de xpath prueba introduciendo este código:

npm install -D cypress-xpath

Cypress-xpath lo deprecaron, a mi me ha sido util crear mis propios plugins introduciendo logica de javascript y Cypress.Commands.add, considero que han sido demasiado utiles. Sobre todo para el E2E

**Usando xpaths** Se instala le plugin `npm i -D cypress-xpath` y si hay algun problema se usa `npm install -D cypress-xpath`. para que funcione, se debe ir al archivo ``e2e.js`` que se encuentra en la carpeta \*\*support\*\* \*\*cypress\support\*\* ```javascript // Import commands.js using ES2015 syntax: import './commands' import 'cypress-xpath' // Alternatively you can use CommonJS syntax: // require('./commands') ```