如何替换柏树中的显式等待调用?

how to replace explicit wait calls in cypress?

我遇到过几种情况,因为元素尚未加载,所以无法使用 cy.get().click() 单击元素。但是,如果我添加即使是最小的等待,如 cy.wait(100);,元素也会变得可点击,我的代码运行正常。

可以避免这种显式调用 cy.wait() 的做法吗?

我想如果我能以某种方式设置 cy.wait(100) 的固定等待时间,即所有步骤之间的 0.1 毫秒,我的问题就会得到解决,但我不知道该怎么做。

我找到了解决办法,贴出来供以后使用

 cy.get('<your-selector-here>').should('be.visible').then(   ($el)  =>  {   $el.click() }    )

您可以简单地使用此断言 .should('be.visible') 来替换显式等待调用。

但是,它有一个问题;这仅适用于您 100% 确定该元素会出现的情况。如果该元素没有出现,断言将简单地失败并且测试将不会继续。

一种解决方案是,您可以使用 Cypress.config(defaultCommandTimeout: 10000) 增加特定情况下的默认命令超时。 在执行此代码后,增加的超时将适用于所有行。