替代{超时:10000}

时间:2019-03-21 20:55:38

标签: timeout wait cypress

当我单击“添加到购物车”按钮时,值“ 2”未保存,并且在我的购物车中仅是一项。问题是,赛普拉斯的运行速度很快。因为当我在这些步骤之间等待一秒钟时,值2将被保存。

it('add two items to cart', function() {

    cy.get('.cx-counter-value', { timeout: 5000 })
      .clear()
      .type(2)
      .should('have.value', '2')

   // .wait(1000)

    cy.contains('Add to cart').click()
})

是否有“ {timeout:5000}”以外的替代方法来等待预期的情况?

1 个答案:

答案 0 :(得分:3)

Cypress没有像预期条件那样的硒。相反,它具有点击事件/ XHR等更高级的概念,

以您的情况为例,我假设应用程序应该触发XHR调用,以将2个项目添加到购物车。您可能可以等待XHR请求成功并验证购物车中是否存在2件商品,

// Wait for the route aliased as 'addToCart' to respond
// without changing or stubbing its response
cy.server()
cy.route('/cart/*').as('addToCart')
cy.visit('/cart/item/2')
cy.wait('@addToCart').then((xhr) => {
    cy.get('.cx-counter-value')
      .should('have.value', '2')
})

即使不是XHR,也只需看看是否触发了您可以依赖的任何事件即可。

参考: https://docs.cypress.io/api/commands/wait.html#Alias