我必须处理对话框元素,如果存在的元素做某事而不执行其他操作,但是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
期望:如果出现对话框,则将其关闭并继续测试,如果对话框未显示,则只是正常测试
答案 0 :(得分:1)
赛普拉斯文档中包含有关example of how to run your tests based off element existence的条件测试的指南。
我已经重写了您问题中的代码,以使用文档中的示例进行操作的方式。这应该起作用:
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...
}
})