Cypress: prueba si el elemento no existe

Resuelto Maccurt asked hace 6 años • 15 respuestas

Quiero poder hacer clic en una casilla de verificación y probar que un elemento ya no está en el DOM en Cypress. ¿Alguien puede sugerir cómo hacerlo?

// This is the Test when the checkbox is clicked and the element is there

cy.get('[type="checkbox"]').click();
cy.get('.check-box-sub-text').contains('Some text in this div.')

Quiero hacer lo contrario de la prueba anterior.

Entonces, cuando hago clic nuevamente, divla clase check-box-sub-textno debería estar en el DOM.

Maccurt avatar Feb 22 '18 04:02 Maccurt
Aceptado

Bueno, esto parece funcionar, así que me dice que tengo algo más que aprender sobre .should()

cy.get('.check-box-sub-text').should('not.exist');
Maccurt avatar Feb 21 '2018 21:02 Maccurt

También puedes buscar un texto que se supone que no existe:

cy.contains('[email protected]').should('not.exist')

Aquí tenéis el resultado en Cypress:0 matched elements

ingrese la descripción de la imagen aquí

Referencia: Documentos: Afirmaciones, Existencia

Alan avatar Nov 03 '2019 19:11 Alan

Úselo .should('not.exist')para afirmar que un elemento no existe en el DOM.


No utilicenot.visible aserciones . Pasaría falsamente en <6.0, pero ahora fallará correctamente:

// for element that was removed from the DOM
// assertions below pass in < 6.0, but properly fail in 6.0+
.should('not.be.visible')
.should('not.contain', 'Text')

Documentos de migración aquí: Migración a Cypress-6-0

t_dom93 avatar Nov 24 '2020 09:11 t_dom93

Migración de Cypress 6.x+

Según los documentos de Cypress sobre la existencia

El intento muy popular, que es un poco ingenuo, funcionará hasta que no funcione y luego tendrás que reescribirlo una y otra vez...

// retry until loading spinner no longer exists
cy.get('#loading').should('not.exist')

Esto realmente no funciona para el problema del título, que es lo que la mayoría de la gente buscará.

Esto funciona para el caso de que se esté eliminando. pero en el caso de que quieras que nunca exista... Lo volverá a intentar hasta que desaparezca.

Sin embargo, si desea probar que el elemento nunca existe en nuestro caso.

Si jaja. Esto es lo que realmente quieres, a menos que quieras volver a tener dolor de cabeza otro día.

// Goes through all the like elements, and says this object doesn't exist ever
cy.get(`img[src]`)
  .then(($imageSection) => {
    $imageSection.map((x, i) => { expect($imageSection[x].getAttribute('src')).to.not.equal(`${Cypress.config().baseUrl}/assets/images/imageName.jpg`) });
})
Urasquirrel avatar May 22 '2020 14:05 Urasquirrel