#cypress
#cypress
Вопрос:
Я должен обработать элемент диалога, если элемент присутствует, сделать что-то, а не другое, но cy.get(‘…’) CypressError: время ожидания повторной попытки истекло, потому что иногда элемент отсутствует. Как с этим справиться
Я пробовал cy.get(‘…’).find(‘…’), cy.get(‘…’).then() и cy.get (‘…’).should(‘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:
В документах 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...
}
})