使用Selenium Java设置Chrome浏览器语言为英文不生效如何解决
解决方案
错误原因排查
- 你第二个尝试方案中的美式英文 locale 代码存在拼写错误:正确的美式英文编码为
en-US,你写的en-usu属于无效值,会被Chrome自动忽略回退为默认语言 - 仅使用
lang启动参数或仅修改intl.accept_languages首选项兼容性不足,Chrome会优先读取系统默认语言配置,需要同时配置多个参数保证生效
可用代码示例
切换为英式英文
ChromeOptions chromeOptions = new ChromeOptions(); // 启动参数指定界面语言 chromeOptions.addArguments("--lang=en-GB"); // 配置首选项,同时指定请求头语言和界面默认语言 Map<String, Object> prefs = new HashMap<>(); prefs.put("intl.accept_languages", "en-GB,en,en-US"); prefs.put("intl.locale.requested", "en-GB"); chromeOptions.setExperimentalOption("prefs", prefs); driver = new ChromeDriver(chromeOptions); driver.get(TestData.baseUrl);
切换为美式英文
仅需要将上述代码中的所有en-GB替换为en-US即可。
额外注意事项
- 确保ChromeDriver的主版本号和你本地安装的Chrome浏览器主版本号完全一致,版本不匹配会导致语言类配置失效
- 测试时不要指定本地已有的用户数据目录(即不要加
user-data-dir启动参数),已保存的用户配置会覆盖代码中的语言设置,也可以加--incognito参数启动无痕模式规避该问题 - 如果测试的网站有IP归属地自动切换语言的逻辑,需要额外配合代理配置使用,否则网站会根据IP返回对应语言的内容
内容的提问来源于stack exchange,提问作者Sammar Ahmad
相关产品推荐
相关产品推荐

