You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress等待保存弹窗消失时测试提示‘expected undefined’问题排查

问题解答

疑问1:为何提示中是undefined而非“Saving”?

当cy.contains('Saving')执行时,如果DOM里已经没有这个元素,Cypress会把该命令的返回值设为undefined。后续执行.should('not.exist')时,断言的对象就是这个undefined,所以报错信息里会显示expected undefined not to exist,而非目标文本“Saving”。

疑问2:是否是cy.wait(2000)导致弹窗提前消失,Cypress未捕获到?

是的,硬编码的cy.wait(2000)是固定等待时长,但弹窗的显示时长可能远短于2秒。等待结束后弹窗已经从DOM中移除,此时cy.contains('Saving')根本找不到目标元素,才会出现上述undefined的报错。

优化后的代码

不要用硬等待,而是先确保弹窗出现,再等待它消失,利用Cypress的自动重试机制保证流程可靠性:

// 点击Save按钮(无需trigger,click会自动处理可见且未禁用的元素)
cy.contains('button:visible','Save').should('not.be.disabled').click();

// 先等待弹窗出现,确认加载状态触发
cy.contains('Saving').should('be.visible');

// 再等待弹窗消失,确认保存完成
cy.contains('Saving').should('not.exist');

内容的提问来源于stack exchange,提问作者Darksymphony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:10:22