【发布时间】:2018-12-13 04:39:21
【问题描述】:
我有这个 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: Timed out retrying: cy.invoke() errored because the property: 'value' does not exist on your subject.
在这两种情况下,get() 命令的赛普拉斯控制台输出都成功显示了具有 value 属性的元素:
已生成:输入 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"
我有点难倒这个。如果您想了解更多信息或知道发生了什么,请告诉我。
【问题讨论】:
-
经过一些黑客攻击,我设法通过
cy.get('input').should('have.value', 'myValue')进行了工作测试。cy.get()返回一个主题数组(即使选择器是特定的并且只返回一个主题),所以its()属性引用是数组的属性,而不是主题。如果 cypress 评估its('myProperty')与should()评估其链接器的方式一致会更好。
标签: cypress