我有这个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">
我想获取它的value
属性来断言它已经通过我的测试进行了更新。
我尝试使用its()
:
cy
.get(selector)
.its("value")
.should("contain", "-Updated");
但是得到错误:
CypressError:超时,重试:cy.its()错误,因为主题上不存在'value'属性。
我也尝试过invoke
:
cy
.get(selector)
.invoke("value")
.should("contain", "-Updated");
但出现类似错误:
CypressError:超时重试:cy.invoke()错误,因为主题上不存在'value'属性。
在两种情况下,get()命令的Cypress控制台输出都会成功显示具有其value
属性的元素:
收益:输入id =“” type =“ text” name =“ first_name” value =“假更新” 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”
我对此很困惑。如果您需要更多信息或了解发生了什么,请告诉我。
答案 0 :(得分:5)
现在有一个您需要的插件。
https://github.com/Lakitna/cypress-commands/blob/develop/docs/attribute.md
有了这个,您就可以做到:
cy.get('input').attribute('placeholder').should('contain', 'username');
答案 1 :(得分:3)
invoke()
在元素上调用jquery函数。要获取输入的值,请使用函数val()
:
cy.get('input').invoke('val').should('contain', 'mytext')
这与获得值属性(将不会随用户输入更新)不相同相同,它仅在渲染元素时预设值。要获取属性,可以使用jquery函数attr()
:
cy.get('input').invoke('attr', 'placeholder').should('contain', 'username')
答案 2 :(得分:0)
Aprt 来自以上建议,您也可以使用 prop()
使用 prop()
而不是 attr()
的好处在于:
prop()
将始终为您提供当前值,但无论您更新多少次,attr 有时都可以为您提供默认值。
cy
.get(selector)
.invoke("prop","value")
.should("contain", "-Updated");
答案 3 :(得分:0)
你可以使用这个
cy.get('a') // yields the element
.should('have.attr', 'href') // yields the "href" attribute
.and('equal', '/home') // checks the "href" value
或
cy.get('a').should('have.attr', 'href', '/home')
欲了解更多详情,请查看:https://docs.cypress.io/api/commands/should#Method-and-Value
答案 4 :(得分:0)
如果以上答案不起作用,试试这个,
cy.get('input[placeholder*="Name"]')
找到包含单词“Name”的占位符属性的输入。