问题描述
我正面临着几种情况,其中仅仅因为元素未加载而无法使用cy.get()。click()单击元素。但是,如果我加上最小的等待,例如cy.wait(100);元素变为可点击,我的代码运行正常。
可以避免这种显式调用cy.wait()的做法吗?
我认为如果我能以某种方式设置cy.wait(100)的固定等待时间,即所有步骤之间的间隔为0.1ms,我的问题将得到解决,但我不知道该怎么做。
解决方法
我找到了解决方案,将其发布给其他人使用
cy.get('<your-selector-here>').should('be.visible').then( ($el) => { $el.click() } )
您可以简单地使用此断言.should('be.visible')
来替换显式的等待调用。
但是,有一个陷阱。这仅适用于您100%确定该元素将出现的情况。如果没有出现该元素,则断言将简单地失败,并且测试将不再继续。
,一个解决方案是,你可以使用 Cypress.config(defaultCommandTimeout: 10000) 针对特定情况增加默认命令超时。 在执行此代码后,增加的超时时间将适用于所有行。