попытался создать утверждение chai-jQuery для объекта, который не является ни объектом DOM, ни объектом jQuery - PullRequest
2 голосов
/ 04 апреля 2019

У меня есть простая структура 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 ]

1 голос
/ 04 апреля 2019

Кроме того, утверждение chai-jQuery можно выразить в XPath просто:

//div/div[1]/input[@placeholder='pl1']
1 голос
/ 04 апреля 2019

cy.xpath() возвращает массив элементов, поэтому вам необходимо получить первый член этого массива.

С небольшой модификацией, чтобы использовать cy.first() для получения первого элементавозвращается cy.xpath(), код в OP работает:

cy.xpath('//div/div[1]/input')
.first()
.should('have.attr', 'placeholder', 'pl1')

К вашему сведению: если вы хотите вместо этого получить i элемент массива, вы можете использовать cy.its(i) вот так:

cy.xpath('//div/div[1]/input')
.its('0') // replace 0 with the index of the element in the array to assert on
.should('have.attr', 'placeholder', 'pl1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...