如何替换柏树中的显式等待调用?
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) 增加特定情况下的默认命令超时。
在执行此代码后,增加的超时将适用于所有行。
我遇到过几种情况,因为元素尚未加载,所以无法使用 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) 增加特定情况下的默认命令超时。 在执行此代码后,增加的超时将适用于所有行。