Cypress测试报错求助:应用代码引发的非框架错误如何解决
解决Cypress测试中“错误源自应用代码而非Cypress”的问题
嘿,这个提示我熟!它意思是Cypress抓拍到你访问的ebay页面自己抛出了JavaScript错误,不是你的测试代码有问题。毕竟你测试的是第三方网站,很多页面错误是咱们控制不了的,我给你几个排查和解决的办法:
先搞清楚具体是什么应用错误
运行测试时,打开Cypress测试窗口的Console标签页,里面会显示目标页面抛出的具体错误详情——比如可能是ebay的广告脚本加载失败、第三方插件抛出异常之类的。这些都是ebay页面自身的问题,但Cypress会默认捕获这类错误并提示你。如果不想让这些第三方错误打断测试
因为咱们没法修复ebay的页面代码,所以可以临时禁用Cypress对应用未捕获异常的检测:
你可以在单个测试用例里加这段代码,只针对当前测试生效:it('loads examples', () => { // 阻止Cypress因为页面未捕获异常而标记测试失败 cy.on('uncaught:exception', (err, runnable) => { return false; }); const url: Url = 'https://www.ebay.com/' cy.visit(url) cy.get('input[type="text"]').should('be.visible').type('book') cy.get('#gh-btn').should('be.visible').click(); })要是你希望所有测试都忽略这类错误,可以在
cypress.config.js(或.ts)里添加全局配置:module.exports = { e2e: { // 全局关闭未捕获异常的检测 uncaughtException: 'off', // 其他配置... } };优化测试代码的稳定性(可选)
你的TypeScript类型定义没问题,但可以给元素操作加个可见性断言,避免因为元素还没加载完成导致的操作失败:
比如把cy.get('input[type="text"]').type('book')改成cy.get('input[type="text"]').should('be.visible').type('book'),这样能确保元素完全就绪后再执行操作,让测试更可靠。
内容的提问来源于stack exchange,提问作者leen M
相关产品推荐
相关产品推荐

