cypress - 仅在元素仍然存在时进行测试
问题描述
我有一条通知消息,它会在保存文件时弹出,并且希望仅当它仍然存在时才关闭它,当我需要按下可能被此通知覆盖的下一个按钮时。
到目前为止,这就是我尝试有条件地关闭通知的方式
Cypress.Commands.add('notificationClose', () => {
if (cy.get('.notification').should('be.visible')) {
console.log('CLOSE ME');
cy.get('.notification-dismiss').click({mulitple: true});
}else{
console.log('ALREADY GONE');
}
});
我也尝试过在这里找到的 jQuery 解决方案。
Cypress.Commands.add('notificationClose', () => {
if (Cypress.$('.notifications-wrapper') == true) {
cy.get('.notification-dismiss').click({mulitple: true});
}
});
我只在需要单击后续按钮之前立即使用它,因此通知可能会自行关闭。
有问题的元素仅在保存文件后临时附加到 DOM。
如何询问此元素是否附加到 DOM?
解决方案
我不完全确定我理解你的问题。但这就是我假设您的意思:
- 您有时会弹出一个未关闭的弹出窗口。
- 如果弹出窗口没有关闭,你想关闭它。
- 如果弹出窗口关闭,您想继续测试。
如果这是正确的,我们只需要修复第 1 步和第 2 步,因为它们很特殊。像往常一样继续测试。
要获得get()
元素所需的行为并断言它是否存在。您可以使用以下代码执行此操作:
cy.get('body').then($body => {
if ($body.find('.notification').length === 1) {
cy.get('.notification-dismiss').click()
}
})
// continu the test
推荐阅读
- python - Django Admin 如何添加过滤器菜单,如基本 UserModel:
- angular - 角模板冻结直到操作完成
- postgresql - 如何在逗号后使用 3 个数字将 varchar 转换为浮点类型 PostgreSQL
- android - 在 Android 8.0 (Oreo) 中打开几秒钟后热点会自动关闭
- javascript - 过滤器/搜索 - 删除搜索前查看可搜索项目的选项
- javascript - 如何在 node.js 中发出 GET 请求发送正文?
- api - 如何在 IBM Power Systems Virtual Servers 中获取云实例 ID
- node.js - Browserify / Electron / AngularJS 错误:fs.existsSync 不是函数
- powershell - 在powershell中通过IP(不是主机名)重命名机器
- php - 按模式删除部分字符串