试图在既不是DOM对象也不是jQuery对象的对象上进行chai-jQuery断言

时间:2019-04-04 14:48:55

标签: xpath cypress

我有一个类似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不是找到元素的好方法。

2 个答案:

答案 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']