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

Cypress启动浏览器时无法加载UTF-16编码网站问题求助

Cypress访问UTF-16编码页面乱码的解决办法

针对你遇到的问题——手动在Chrome中访问UTF-16编码的页面正常,但通过Cypress的cy.visit()访问时出现乱码,核心原因是Cypress启动的浏览器实例默认以UTF-8解析页面,未正确识别meta标签中的编码设置。以下是几种可行的解决方法:

方法1:拦截请求并修改响应头

在测试用例中拦截页面请求,手动修改响应的Content-Type头,明确指定UTF-16编码,让浏览器以此编码解析页面:

// 拦截目标页面的GET请求
cy.intercept('GET', '/你的页面路径', (req) => {
  req.continue((res) => {
    // 修改响应头,添加UTF-16编码声明
    res.headers['content-type'] = 'text/html; charset=utf-16';
  });
}).as('loadTargetPage');

// 访问页面并等待请求完成
cy.visit('/你的页面路径');
cy.wait('@loadTargetPage');

方法2:修改Cypress浏览器启动参数

在Cypress配置文件中,通过before:browser:launch钩子给Chrome添加启动参数,强制其默认使用UTF-16编码:

const { defineConfig } = require('cypress');

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      on('before:browser:launch', (browser = {}, launchOptions) => {
        // 针对Chromium系浏览器(Chrome、Edge等)生效
        if (browser.family === 'chromium' && browser.name !== 'electron') {
          launchOptions.args.push('--default-charset=utf-16');
          return launchOptions;
        }
      });
    },
  },
});

方法3:确认页面文件的实际编码

确保你的HTML文件本身是用UTF-16编码保存的,而非UTF-8编码后仅添加<meta charset="utf-16">标签。可以用VS Code等编辑器查看文件编码(右下角显示当前编码),若不一致则转换为UTF-16保存。

修改完成后重新运行测试,检查Cypress开发者工具中的页面编码是否变为UTF-16,页面内容是否正常显示即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:03:12