Error trying to get attribute from element in Cypress

只愿长相守 提交于 2020-04-28 08:18:11

问题


I have this HTML element:

<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">

I want to get it's value property to assert that it has been updated by my test.

I have tried using its():

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

But get the error:

CypressError: Timed out retrying: cy.its() errored because the property: 'value' does not exist on your subject.

I have also tried invoke:

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

But get a similar error:

CypressError: Timed out retrying: cy.invoke() errored because the property: 'value' does not exist on your subject.

In both cases, the Cypress console output of the get() command shows the element with its value property successfully:

Yielded: 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"

I'm kind of stumped on this one. Please let me know if you want more info or have an idea what's going on.


回答1:


invoke() calls a jquery function on the element. To get the value of an input, use the function val():

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

This is not the same as getting the value attribute which will not update with user input, it only presets the value when the element renders. To get an attribute, you can use the jquery function attr():

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



回答2:


Now there is an official plugin for your need.

https://github.com/Lakitna/cypress-commands/blob/develop/docs/attribute.md

With this, you'll be able to do :

cy.get('input').attribute('placeholder').should('contain', 'username');


来源:https://stackoverflow.com/questions/51178736/error-trying-to-get-attribute-from-element-in-cypress

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!