能否在特定Cypress测试中配置浏览器不显示图片
Cypress 配置浏览器不加载图片的实现方案
完全可以实现,配置后浏览器会跳过所有图片资源加载,能明显缩短含大量图片页面的测试执行时间,完全适配仅校验图片关联文本的筛选功能测试场景,不会影响文本、元素属性的读取逻辑。
目前有两种常用实现方案,可根据测试场景选择:
方案1:全局拦截图片资源请求(全浏览器兼容)
通过Cypress自带的请求拦截能力阻断图片加载,对Chrome、Edge、Firefox、Electron所有Cypress支持的浏览器都生效,是通用性最高的方案:
- 打开Cypress项目下的
cypress/support/e2e.js(Cypress 10之前的版本对应路径为cypress/support/index.js),在文件中添加全局拦截规则:
// 所有测试用例执行前统一拦截图片类资源 beforeEach(() => { cy.intercept( { resourceType: /image/ }, { statusCode: 204, body: '' } ) })
- 上述规则会自动匹配jpg、png、gif、webp、svg等所有类型为image的网络请求,直接返回空响应终止加载,不需要逐个匹配图片后缀。如果不需要全局生效,只需要把这段拦截代码移到特定测试用例、或者对应测试集的
beforeEach钩子中即可。
方案2:配置Chromium内核浏览器启动参数(性能更优)
如果你的测试仅在Chrome、Edge这类Chromium内核浏览器上运行,可以直接修改浏览器启动参数,从内核层面禁止图片加载,性能消耗比请求拦截更低:
- 打开项目根目录的
cypress.config.js配置文件,在setupNodeEvents钩子中添加浏览器启动参数逻辑:
const { defineConfig } = require("cypress"); module.exports = defineConfig({ e2e: { setupNodeEvents(on, config) { on('before:browser:launch', (browser, launchOptions) => { // 仅对非Electron的Chromium内核浏览器生效 if (browser.family === 'chromium' && browser.name !== 'electron') { launchOptions.args.push('--blink-settings=imagesEnabled=false') } return launchOptions }) }, }, });
注意:该方案对Firefox、Electron浏览器不生效,如果需要做多浏览器兼容测试,优先选择第一种请求拦截方案。
两种配置方式都不会修改页面DOM结构、元素绑定的文本和属性值,不会干扰筛选器的逻辑校验结果。
内容的提问来源于stack exchange,提问作者vitaliy4us
相关产品推荐
相关产品推荐

