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

如何在Cypress中用intercept命令替换img标签加载的远程图片

问题:拦截登录页Logo请求替换为本地图片失败

登录页面加载后,页面内的img标签会请求https://example.com/logo.png加载Logo,我想用Cypress的cy.intercept()在所有测试执行前拦截该请求,替换成本地的image.png fixture,但尝试以下代码后未生效:

cy.intercept('https://example.com/logo.png', {fixture: 'image.png'})
解决方法
  • 确保拦截时机正确:拦截代码必须在页面发起请求前设置,建议放在before()或beforeEach()钩子中,且要早于cy.visit()执行。示例代码:
    beforeEach(() => {
      cy.intercept('https://example.com/logo.png', {fixture: 'image.png'})
      cy.visit('/login')
    })
    
  • 检查fixture文件路径:确认image.png存放在Cypress默认的cypress/fixtures目录下;如果放在子目录,需指定完整路径,比如{fixture: 'assets/image.png'}。
  • 优化请求匹配规则:如果实际请求带有查询参数、URL大小写差异或其他细微变化,改用正则表达式匹配更灵活:
    cy.intercept(/logo\.png$/, {fixture: 'image.png'})
    
  • 验证拦截命中状态:打开Cypress的Network面板,查看logo.png请求是否存在,以及拦截条目是否显示"Intercepted"标识,确认拦截规则是否匹配。
  • 禁用浏览器缓存:若浏览器缓存了原Logo图片,可在拦截配置中添加响应头禁用缓存:
    cy.intercept('https://example.com/logo.png', {
      fixture: 'image.png',
      headers: {
        'Cache-Control': 'no-cache, no-store'
      }
    })
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:22:23