web-dev-qa-db-fra.com

Erreur lors de la tentative d'obtention de l'attribut de l'élément dans Cypress

J'ai cet élément HTML:

<input id="" type="text" name="last_name" value="Userc7bff2d0-7faf-11e8-9884-8fe4c5df7f77-Updated" class="medium" maxlength="2000" autocomplete="off" tabindex="" data-reactid=".0.2.0.1.0.2.1.0.1.0.0.1:0.1.0.1.2:$/=10">

Je veux obtenir sa propriété value pour affirmer qu'elle a été mise à jour par mon test.

J'ai essayé d'utiliser its():

cy
  .get(selector)
  .its("value")
  .should("contain", "-Updated");

Mais obtenez l'erreur:

CypressError: Expiration du délai de nouvelle tentative: cy.its () s'est trompé car la propriété: 'value' n'existe pas sur votre sujet.

J'ai également essayé invoke:

cy
  .get(selector)
  .invoke("value")
  .should("contain", "-Updated");

Mais obtenez une erreur similaire:

CypressError: Expiration du délai de nouvelle tentative: cy.invoke () s'est trompé car la propriété: 'value' n'existe pas sur votre sujet.

Dans les deux cas, la sortie de la console Cypress de la commande get () affiche l'élément avec sa propriété value avec succès:

Cédé: input id = "" type = "text" name = "first_name" value = "Fake-Updated" class = "medium" maxlength = "2000" autocomplete = "off" tabindex = "" data- reactid = ". 0.2 .0.1.0.2.1.0.1.0.0.1: 0.1.0.0.2: $/= 10 "

Je suis un peu perplexe sur celui-ci. Veuillez me faire savoir si vous souhaitez plus d'informations ou si vous avez une idée de ce qui se passe.

10
Brendan

invoke() appelle une fonction jquery sur l'élément. Pour obtenir la valeur d'une entrée, utilisez la fonction val():

cy.get('input').invoke('val').should('contain', 'mytext')

Ceci n'est pas le même que l'obtention de l'attribut de valeur qui ne sera pas mis à jour avec une entrée utilisateur, il ne prédéfinit la valeur que lors du rendu de l'élément. Pour obtenir un attribut, vous pouvez utiliser la fonction jquery attr():

cy.get('input').invoke('attr', 'placeholder').should('contain', 'username')
7
bkucera