做了相当多的阅读,但没有一个我尝试的事情…
我有一个用例是:我需要点击一个按钮(比如10次)来加载更多的项目在一个页面上,但如果我们已经加载了所有的项目按钮消失。加载的次数并不总是相同的,所以在某些情况下我可以点击10次,其他时候我只能点击5次。
我们如何用柏树做到这一点?
只需注意一点:加载按钮在加载新项目时,按钮仍然存在,但传递到禁用状态,然后再去启用或消失。
看到递归函数模式了吗?
之类的function clickUntilGone(selector, attempt = 0) {
if (attempt === 11) {
throw 'It didnt work'
}
cy.get(selector).click()
.then($button => {
const exists = Cypress.$(selector).length > 0
if (exists) {
// wait for disabled/not disabled cycle
cy.get(selector:disabled).then(() => {
cy.get(selector:not(:disabled)).then(() => {
clickUntilGone(selector, ++attempt))
})
})
})
})
}
clickUntilGone('my-button`)