我想搜索一个元素,如果找不到,则查找第二个元素:
cy.get(@firstElement).or(@secondElement).click()
有一些功能我可以在条件下使用,比如
||
吗?
如果
,
异步加载,则 OR 条件的 firstElement
将不起作用。使用命令
cy.get('firstElement, secondElement') // no retry on firstElement
即使
secondElement
仅在 10 毫秒后出现或正在动画,它也会直接转到
firstElement
。因此该技术跳过了 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
,
来执行 OR 条件。比如:
cy.get('firstElement,secondElement').click()
这可以使用 :is 伪类来实现 :is 伪类允许您组合多个选择器:
cy.get(':is(选择器1,选择器2)')