当我单击“添加到购物车”按钮时,值“ 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}”以外的替代方法来等待预期的情况?
答案 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,也只需看看是否触发了您可以依赖的任何事件即可。