我有一个类似html的简单结构
<div>
<div>
<input placeholder="pl1"></input>
</div>
<div>
<input placeholder="pl2"></input>
</div>
</div>
和代码:
cy.xpath('//div/div[1]/input').should('have.attr', 'placeholder', 'pl1')
但是如果运行此代码,我将捕获如下异常:
CypressError: Timed out retrying: You attempted to make a chai-jQuery assertion on an object that is neither a DOM object or a
jQuery对象。 您使用的chai-jQuery断言是:
attr 您断言的无效主题是: [] 要使用chai-jQuery断言,您的主题必须有效。 如果先前的断言更改了主题,有时可能会发生这种情况。
问题是:如何检查具有值存在的属性以及如何避免此错误? CSS不是找到元素的好方法。
答案 0 :(得分:1)
array_count_values([6,4,10,6,6])
返回一个元素数组,因此您需要获取该数组的第一个成员。
稍作修改即可使用cy.first()
来获取cy.xpath()
返回的第一个元素,OP中的代码可以工作:
cy.xpath()
仅供参考:如果您想获取数组的第cy.xpath('//div/div[1]/input')
.first()
.should('have.attr', 'placeholder', 'pl1')
个成员,则可以像这样使用cy.its(i)
:
i
答案 1 :(得分:1)
此外,可以在XPath中将 chai-jQuery断言表示为:
//div/div[1]/input[@placeholder='pl1']