这个问题已经有答案了:
Dialog that may or may not appear on page start(1个答案)
7个月前关闭。
我有一个应用程序,反馈弹出随机出现在一个页面;像弹出可能会或可能不会来在页面加载后,它为近3000毫秒。如何处理这个突然出现在柏树。
我试了下面的代码:
cy.get("div.QSIFeedbackButton").then(($body)=> {
if($body.find('.QSIWebResponsiveDialog-Layout1-SI_0rEzRx2V9yqm1Yq_close-btn > img')){
cy.get('.QSIWebResponsiveDialog-Layout1-SI_0rEzRx2V9yqm1Yq_content').contains('Help us improve our portal!')
cy.get('.QSIWebResponsiveDialog-Layout1-SI_0rEzRx2V9yqm1Yq_close-btn > img').click()
}
else {
cy.log('feed back pop up not found')
}
})
但这个总是失败的IF块,当弹出不出现。我想优雅地运行测试,这样即使弹出窗口没有出现,测试也不会失败&它应该转到else块。我如何在测试中做到这一点?
2条答案
按热度按时间fcg9iug31#
您可以使用'MutationObserver',它是一个事件侦听器,当节点/节点从DOM中添加或删除时会触发。然后,您可以检查模态是否显示(或者只是关闭模态按钮):
注意:这是异步的,独立于cypress(你的cypress代码不会等待它执行,所以你可能会遇到一些与此同时发生的动作的问题)。
3hvapo4f2#
如果弹出窗口在一段时间后消失,请使用以下命令:
cy.get('random popup id').should('not. exist')
效果很好,因为它检查弹出窗口是否存在于DOM树中,如果您可以将testid添加到弹出窗口中,效果会更好