392 votes

Cypress : Test si l'élément n'existe pas

Je veux pouvoir cliquer sur une case à cocher et tester qu'un élément n'est plus dans le DOM dans Cypress. Quelqu'un peut-il me suggérer comment faire ?

//This is the Test when the check box is clicked and the element is there
cy.get('[type="checkbox"]').click();
cy.get('.check-box-sub-text').contains('Some text in this div.')

Je veux faire le contraire du test ci-dessus. Ainsi, lorsque je clique à nouveau, la div avec la classe ne doit pas être dans le DOM.

2 votes

Je m'interroge sur le vote négatif

0 votes

La question me semble logique

1 votes

Je sais que cela n'a rien à voir avec votre question, mais je suis vraiment curieux. Quelle a été la décision d'utiliser quelque chose qui ne prend en charge que Chrome et qu'est-ce qui est tellement mieux dans Cypress ? J'ai travaillé sur le projet open-source Courgette. github.com/canvaspixels/courgette et je me demandais quelles caractéristiques attiraient les gens vers Cypress.

533voto

Maccurt Points 26

Cela semble fonctionner, ce qui me fait dire que j'ai encore des choses à apprendre sur .should().

cy.get('.check-box-sub-text').should('not.exist');

14 votes

BONJOUR ! J'utilise à peu près le même code : cy.get(data-e2e="create-entity-field-relation-contact-name")‌​.should('not.exists'‌​) mais il échoue sur get et essaie ensuite d'invoquer should plusieurs fois, avec à chaque fois un échec... une idée de ce que je fais mal ? Merci d'avance

0 votes

Désolé, je viens de voir votre commentaire. Votre sélecteur fonctionne-t-il sur un attribut de données ? Peux-tu coller ton html dans les commentaires ? Ce sélecteur m'a l'air bizarre !

0 votes

@volk je pense cy.get('[data-e2e="create-entity-field-relation-contact-name‌​"]').should('not.exi‌​sts') devrait fonctionner.

112voto

Alan Points 417

Vous pouvez également rechercher un texte qui n'est pas censé exister :

cy.contains('test_invite_member@gmail.com').should('not.exist')

Vous avez ici le résultat à Cypress : 0 matched elements

enter image description here

documentation : https://docs.cypress.io/guides/references/assertions.html#Existence

13 votes

Cela n'a pas fonctionné pour moi, le contains a expiré et a fait échouer le test CypressError: Timed out retrying: Expected to find content: 'Im not supposed to be here' but never did.

0 votes

J'ai ajouté plus d'explications avec un exemple dans ma réponse. Après avoir supprimé l'utilisateur test_invite_member@gmail.com Je vérifie si l'email existe quelque part. Le résultat est le suivant 0 element . Quelle version de Cypress utilisez-vous ?

0 votes

Merci pour la mise à jour. npx cypress --version - Cypress package version: 3.5.0 Cypress binary version: 3.5.0

23voto

MrSmiley Points 91
cy.get('[data-e2e="create-entity-field-relation-contact-name"]').should('not.exist');

peut conduire à de faux résultats, car certains messages d'erreur sont masqués. Il est peut-être préférable d'utiliser

.should('not.visible');

dans ce cas.

2 votes

S'il n'existait pas dans le DOM, est-ce que not.visible fonctionnerait ? Je vais faire un essai. Merci !!!!

5 votes

Pour moi, c'était tout le contraire ! ( should('not.exist') a corrigé une erreur should('not.be.visible') )

0 votes

S'il n'existe pas dans le domaine, alors not.be.visible fonctionnera. Si vous vérifiez les journaux de cypress, vous obtiendrez quelque chose comme expected undefined to not be visible et l'assertion passera. Donc, d'une certaine manière, not be visible couvre en fait not exist et not visible en une seule assertion.

7voto

Mike Points 546

Voici ce qui a marché pour moi :

cy.get('[data-cy=parent]').should('not.have.descendants', 'img')

Je vérifie que certains <div data-cy="parent"> n'a pas d'images à l'intérieur. En ce qui concerne la question initiale, vous pouvez définir data-cy="something, i.e. child" sur les noeuds internes et utiliser cette assertion :

cy.get('[data-cy=parent]').should('not.have.descendants', '[data-cy=child]')

0voto

Rajan Domala Points 11

Vous pouvez également utiliser le code ci-dessous

expect(opportunitynametext.include("Addon")).to.be.false

o

should('be.not.be.visible')

o

should('have.attr','minlength','2')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X