Cypress 如何在两个元素之间使用“cy.get”

问题描述 投票:0回答:3

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

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

有一些功能我可以在条件下使用,比如

||
吗?

javascript typescript testing automated-tests cypress
3个回答
4
投票

如果

,
异步加载,则 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



1
投票
,

来执行 OR 条件。比如:

cy.get('firstElement,secondElement').click()



0
投票

这可以使用 :is 伪类来实现 :is 伪类允许您组合多个选择器:

cy.get(':is(选择器1,选择器2)')

© www.soinside.com 2019 - 2024. All rights reserved.