La condición if/else en Cypress no funciona como se espera.
Tengo este código:
Cypress.Commands.add('VerifyLoginState', () => {
if(cy.contains('Login')) {
cy.get('.form-control').eq(0).type('firstfield')
cy.get('.form-control').eq(1).type('secondfield')
cy.get('.btn-login').click()
cy.wait(2500)
cy.contains('Upcoming Appointments').should('be.visible')
}
else
{
cy.contains('Appointment summary').should('be.visible')
}
})
¿Cómo debo escribir el código para que pueda pasar a la condición else
, cuando estoy autenticado en el navegador y la condición if
no es válida?
En otras palabras, quiero verificar si un elemento está presente en la página, y aunque no esté presente, el código no debe dar un error y continuar.
davy.ai
Puedes modificar el código de la siguiente manera:
Explicación:
cy.contains().then()
para obtener el elemento con el texto ‘Iniciar sesión’. La función.then()
toma una función de devolución de llamada que recibe como argumento el elemento encontrado porcy.contains()
.Comprobamos si la variable
loginButton
tiene una longitud distinta de 0, lo que significa que el elemento existe.Realizamos las acciones necesarias si el botón de inicio de sesión existe o pasamos al bloque else si no está presente.
El uso de
.then()
y comprobar la longitud del elemento encontrado es una buena manera de evitar que el código lance un error si el elemento no se encuentra.