Cypress单命令超时未生效,如何单独设置指定命令超时时间
解决Cypress单个命令超时不生效的问题
你当前的问题是timeout参数传错了位置——Cypress的should断言不接受timeout配置,你把它传给should根本不会生效,所以还是用了全局默认的4秒超时,导致断言失败。
正确的做法是把{ timeout: 15000 }传给cy.get命令,而不是后面的should:
it('shows the problem for Stack Overflow', function () { // 此处有若干执行操作的命令... const loadingSpinnerLocator = ".k-loader-canvas"; cy.get(loadingSpinnerLocator).should('be.visible'); // 将timeout选项传递给cy.get,让它等待最多15秒查找元素 cy.get(loadingSpinnerLocator, { timeout: 15000 }).should('not.exist'); })
补充说明:
- Cypress中,
timeout是命令(比如cy.get、cy.wait)的配置选项,断言(should/expect)本身没有独立的超时设置,会继承所属命令的超时时间。 - 如果你的加载spinner是和某个后端请求绑定的,更可靠的方式是用
cy.intercept拦截对应的请求,等请求完成后再断言spinner消失,这样不需要依赖固定超时时间:cy.intercept('GET', '/api/your-loading-endpoint').as('loadData'); // 触发加载操作的代码... cy.wait('@loadData'); // 等待请求完成 cy.get(loadingSpinnerLocator).should('not.exist');
内容的提问来源于stack exchange,提问作者samantha
相关产品推荐
相关产品推荐

