ChromeDriver语言无法设置为英文求助(Java-Selenium环境)
解决ChromeDriver(v111)在Java-Selenium中无法设置英文语言的问题
问题分析
你尝试的两种方法存在细节疏漏:第一种代码中--lang参数使用了全角破折号,且设置的是西班牙语(es)而非英文;第二种仅设置了intl.accept_languages但未配合--lang参数,同时可能存在Chrome浏览器与ChromeDriver版本不匹配的情况。
可行解决方案
- 确保Chrome浏览器与ChromeDriver版本严格一致:ChromeDriver 111必须对应Chrome浏览器111.x版本,版本不匹配会直接导致配置失效。
- 修正
--lang参数并设置英文标识:使用半角破折号,指定英文语言代码(en或en-US),同时结合intl.accept_languages偏好设置双管齐下。 - 使用干净的用户数据目录:避免旧缓存配置干扰新的语言设置。
完整代码示例
WebDriverManager.chromedriver().setup(); ChromeOptions ops = new ChromeOptions(); // 设置语言偏好 Map<String, Object> prefs = new HashMap<>(); prefs.put("intl.accept_languages", "en,en-US"); ops.setExperimentalOption("prefs", prefs); // 添加正确的lang启动参数 ops.addArguments("--lang=en-US"); ops.addArguments("--remote-allow-origins=*"); // 指定干净的用户数据目录,避免旧配置残留 ops.addArguments("--user-data-dir=C:\\temp\\chrome-profile"); ops.addArguments("--disable-extensions"); ChromeDriver chromeDriver = new ChromeDriver(ops); chromeDriver.get("https://demo.openmrs.org/openmrs/login.htm"); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } chromeDriver.findElement(By.xpath("//input[@placeholder='Enter username']")).sendKeys("admin"); chromeDriver.findElement(By.xpath("//input[@placeholder='Enter your password']")).sendKeys("Admin123"); chromeDriver.findElement(By.xpath("//font[text()='Inpatient Ward']")).click(); chromeDriver.findElement(By.xpath("//input[@value='Log in']")).click(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } String title = chromeDriver.getTitle(); System.out.println(title); chromeDriver.findElement(By.xpath("//font[contains(text(),'end session')]")).click(); chromeDriver.quit();
额外注意事项
- 若指定
--user-data-dir,确保目标目录存在且为空,避免旧配置残留影响。 - 部分系统可能需要提前配置环境变量:Linux/macOS设置
LANG=en_US.UTF-8,Windows设置set LANG=en_US.UTF-8,启动Java程序前配置该变量可加强语言设置效果。
内容的提问来源于stack exchange,提问作者Asghar Nazir
相关产品推荐
相关产品推荐

