单击 Cypress,是否有任何方法可以等待 DOM 加载? (不使用等待())
Cypress on click, is there any method to wait until DOM is loaded? (without using wait())
我在 React 项目中遇到一个小问题,当我想使用来自 Cypress 的 .click()
时,有时我会遇到错误 failed 因为此元素与 dom 分离。 简单的解决方案是在每次测试前添加 wait()
让网站完全呈现,但这对我来说不是最好的解决方案。有什么办法可以不使用 wait()
?
在单击按钮之前写一个 should('be.visible')
断言怎么样?类似于:
cy.get('button').should('be.visible').click()
Cypress 文档是您的朋友 =)
我发现这个blog on docs. It details using cypress-pipe
在断言之前有一个回调函数
// create a click function as pipe does not take any cypress commands
const click = $el => $el.click()
cy.get('.your-element')
.should('be.visible')
.pipe(click)
.should($el => {
// whatever assertion you need after your click event is attached
})
// calendar should close on the user click
cy.get('.owl-dt-popup').should('not.be.visible')
这与他们承诺很快修复的已知柏树问题有关:https://github.com/cypress-io/cypress/issues/7306
在问题解决之前,您可以添加 .wait()
,如果它适用于您的方案,或者尝试 .click({force: true})
。不过两者都有缺点。
我在 React 项目中遇到一个小问题,当我想使用来自 Cypress 的 .click()
时,有时我会遇到错误 failed 因为此元素与 dom 分离。 简单的解决方案是在每次测试前添加 wait()
让网站完全呈现,但这对我来说不是最好的解决方案。有什么办法可以不使用 wait()
?
在单击按钮之前写一个 should('be.visible')
断言怎么样?类似于:
cy.get('button').should('be.visible').click()
Cypress 文档是您的朋友 =)
我发现这个blog on docs. It details using cypress-pipe
在断言之前有一个回调函数
// create a click function as pipe does not take any cypress commands
const click = $el => $el.click()
cy.get('.your-element')
.should('be.visible')
.pipe(click)
.should($el => {
// whatever assertion you need after your click event is attached
})
// calendar should close on the user click
cy.get('.owl-dt-popup').should('not.be.visible')
这与他们承诺很快修复的已知柏树问题有关:https://github.com/cypress-io/cypress/issues/7306
在问题解决之前,您可以添加 .wait()
,如果它适用于您的方案,或者尝试 .click({force: true})
。不过两者都有缺点。