javascript - Cypress 如何在两个元素之间使用 'cy.get'

标签 javascript typescript testing automated-tests cypress

我想搜索一个元素,如果找不到,再找第二个元素:

cy.get(@firstElement).or(@secondElement).click()

是否有一些函数可以像 || 那样在条件中使用?

最佳答案

如果 firstElement 异步加载,OR 条件的 将不起作用

使用命令

cy.get('firstElement, secondElement')      // no retry on firstElement

它直接进入 secondElement,即使 firstElement 仅在 10 毫秒后出现,或者正在播放动画。

所以这种技术跳过了 Cypress 重试机制,这就是为什么 Cypress 没有在文档中提及它


firstElement 是异步时,我可以看到一种方法是捕获失败事件。

注意
Cypress 文档说只使用失败事件进行调试,但 Cypress 确实在他们自己的测试中使用它。

Cypress.once('fail', () => {             // "once" means catch fail for next command only
  console.log('Clicking secondElement')
  Cypress.$('secondElement').trigger('click')
})

cy.get('firstElement', { log: false })   // retry for 'firstElement' but suppress log
  .click()                               // never executes this if 'firstElement' fails

关于javascript - Cypress 如何在两个元素之间使用 'cy.get',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68111716/

相关文章:

testing - 测试计划/文档/管理工具

Mysql显示不超过5个并发连接

javascript - 在 JavaScript 中通过 MySql 验证输入

JavaScript 过滤器返回 true 但不过滤

javascript - Meteor:错误:ENOTEMPTY:部署到 Modulus 时目录不为空

typescript - XSym : not found while executing binary in Docker on Windows

javascript - 每次我 `git commit` 时 VS Code 的 Typescript IntelliSense 都会中断

AngularJS + Angular 8 不能一起工作 [混合应用]

javascript - 使用 ajax 更新 CGridView 不起作用

javascript - 如何阻止 Protractor 在失败时运行进一步的测试用例?