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

使用Cypress做E2E测试时页面无限加载问题求助

常见触发原因及对应解决方案

  • 前端路由未正确处理Cypress运行环境下的状态切换
    多数单页应用的路由跳转逻辑会依赖窗口原生的beforeunload/unload事件监听,或是存在自定义的加载状态防抖逻辑,Cypress的页面劫持机制可能会导致这类事件触发异常,跳转后加载状态无法被正确重置。
    解决方法:跳转前主动移除测试环境下多余的事件监听,或是在跳转命令后添加自定义等待逻辑,等待目标分区的核心DOM元素出现,而非依赖Cypress默认的页面加载完成判定:
    // 示例代码
    cy.get('header .nav-item[href="/target-section"]').click()
    cy.waitUntil(() => cy.get('.target-section-wrapper').should('be.visible'), {
      timeout: 10000,
      interval: 500
    })
    
  • Cypress默认的页面加载等待逻辑和站点的异步资源加载逻辑冲突
    你当前配置的modifyObstructiveCode: false会保留站点原有的所有阻塞型代码逻辑,如果站点存在未处理的死循环请求、或是依赖第三方资源加载完成才会终止加载状态,Cypress会持续等待直到超时。
    解决方法:跳转前关闭不必要的资源请求拦截,或是添加pageLoadTimeout配置延长超时时间,也可以使用cy.intercept()拦截死循环的异常请求直接返回成功状态:
    // cypress.config.js 补充配置示例
    module.exports = defineConfig({
      e2e: {
        pageLoadTimeout: 30000,
        chromeWebSecurity: false,
        modifyObstructiveCode: false
      }
    })
    
  • 登录态未正确同步到跳转后的分区
    部分站点不同分区会校验不同的权限cookie/请求头,如果登录态仅在首页生效,跳转后的分区会持续发起权限校验请求进入死循环。
    解决方法:跳转后主动打印当前页面的cookie和localStorage信息,确认登录态是否正常同步,必要时可以用cy.setCookie()主动写入对应分区需要的权限凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:02