如何用cypress-wait-until实现页面重载直至目标元素定位?
使用cypress-wait-until实现“重载页面直到目标元素出现”的解决方案
需求场景
- 访问目标页面
- 检查指定元素是否存在
- 元素不存在则重复重载页面,直到元素出现
- 元素出现后断言其存在
遇到的问题
未使用cypress-wait-until的代码可以正常运行,但在cypress-wait-until中加入cy.reload()后,代码直接失效;移除cy.reload()后,插件的基础功能又能正常工作。
自定义实现的经验与差异分析
我自己编写了refreshUntil自定义命令实现了需求,对比后发现和失效的cypress-wait-until代码有两个核心差异:
- 每次重试都会重新执行
Cypress.$(selector).length来检查元素状态 - 页面重载后会等待一段时间再进行元素检查
可行的cypress-wait-until代码方案
结合上述两点调整后,最终得到可以正常工作的代码:
cy.waitUntil(() => cy.reload().wait(2500).then(() => Cypress.$(selector).length), options);
内容的提问来源于stack exchange,提问作者Léo Coco
相关产品推荐
相关产品推荐

