Сайпресс получает остановки в первый раз - PullRequest
1 голос
/ 25 марта 2019

Когда я запускаю свой тест для этого HTML-кода

<body>
  <div tester='notmatching'>
    foo
  </div>
  <div tester='matching'>
    bar
  </div>
</body>

</html>

Cypress не выходит за рамки первого "div".

Вот мой тест:

context('Home', () => {
  beforeEach(() => {
    cy.visit('http://example.org')
  })
  it('Find a div', () => {
    cy.get('div').should('have.attr', 'tester', 'matching')
  })
})

Si Я получаю следующую ошибку:

CypressError: Timed out retrying: expected '[ <div>, 1 more... ]' to have attribute 'tester' with the value 'matching', but the value was 'notmatching'

Поэтому, когда я ставлю строку:

cy.get('div').should('have.attr', 'tester', 'notmatching')

Это работает.

Что я делаю не так?

1 Ответ

1 голос
/ 25 марта 2019

Я думаю, что вы должны нацеливаться на второй соответствующий элемент, используя eq:

cy.get('div').eq(1).should('have.attr', 'tester', 'matching')

https://docs.cypress.io/api/commands/eq.html#Syntax

РЕДАКТИРОВАТЬ:

Если выхотите перебрать их и проверить каждый из них, вы можете сделать это:

cy
  .get('div')
  .each(($el, index, $list) => {
    if ($el.attr('tester') === 'matching') {
      // do something here

РЕДАКТИРОВАТЬ 2:

Если вы просто хотите сопоставить div с этим атрибутом- вы можете сделать это:

cy.get("div[tester='matching']").should(...
...