我需要处理我的页面可能在加载阶段显示弹出对话框或可能不出现的情况。单击任意位置都会将其删除,我对测试此对话框不感兴趣,但它阻止了我需要访问的页面,因此必须将其删除
这是在对话框出现时获取对话框的代码
cy.get('.wps_popup')
.find('[data-wps-popup-close]')
.click()
Run Code Online (Sandbox Code Playgroud)
但我不能把它放在测试的顶部,因为这个元素可能不会出现。
如何处理条件元素 - 我是否需要intercept更改 DOM 并将该代码放入事件侦听器中?
我正在写一个赛普拉斯测试来登录一个网站.有用户名和密码字段以及提交按钮.大多数登录都很简单,但有时会出现一个必须被解除的警告对话框.
我试过这个:
cy.get('#login-username').type('username');
cy.get('#login-password').type(`password{enter}`);
// Check for a possible warning dialog and dismiss it
if (cy.get('.warning')) {
cy.get('#warn-dialog-submit').click();
}
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但如果没有出现警告则测试失败:
CypressError: Timed out retrying: Expected to find element: '.warning', but never found it.
Run Code Online (Sandbox Code Playgroud)
然后我尝试了这个,因为警告不够快,所以赛普拉斯.$没有找到任何东西:
cy.get('#login-username').type('username');
cy.get('#login-password').type(`password{enter}`);
// Check for a possible warning dialog and dismiss it
if (Cypress.$('.warning').length > 0) {
cy.get('#warn-dialog-submit').click();
}
Run Code Online (Sandbox Code Playgroud)
检查元素是否存在的正确方法是什么?我需要像cy.get这样的东西,如果找不到元素就不会抱怨.