Как обрабатывать (cy.get ()) динамический элемент, если существует, делать A, если не делать B - PullRequest
1 голос
/ 27 марта 2019

Я должен обработать элемент диалога, если элемент присутствует, что-то делает, а не делает что-то другое, но cy.get ('...') CypressError: Тайм-аут повторной попытки, иногда элемент отсутствует.Как с этим справиться

Я попробовал cy.get ('...'). Find ('...'), cy.get ('...'). Then () и cy.get('...'). должен ('to.exist') не работать.

cy.get('div.ui-dialog-content.ui-widget-content > p-messages > div > ul > li:nth-child(2) > span')
        .should('to.exist').then(() => {
            // only do if found element 
            cy.get('div.ui-dialog-titlebar.ui-widget-header.ui-helper-clearfix > a > span')
                .click()
        })

// do another 

Ожидайте: если диалоговое окно появится, закройте его и продолжите тестирование, если диалоговое окно не отображается простотест нормально

1 Ответ

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

В документах Cypress есть руководство по условному тестированию с примером того, как выполнять ваши тесты на основе существования элемента .

Я переписал код в вашем вопросе для использованиякак пример из документации делает это.Это должно работать:

cy.get('body').then(($body) => {
  if ($body.find('div.ui-dialog-content.ui-widget-content > p-messages > div > ul > li:nth-child(2) > span').length) {
    // element found, do something here...
    cy.get('div.ui-dialog-titlebar.ui-widget-header.ui-helper-clearfix > a > span')
      .click()
  } else {
    // do something else...
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...