28

我下载了 ChromeDriver,默认情况下浏览器语言是英文,我需要将其更改为西班牙文,但我一直无法。

public WebDriver getDriver(String locale){   
    System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe");
    return new ChromeDriver();
}

public void initializeSelenium() throws Exception{
    driver = getDriver("en-us")
}
4

8 回答 8

32

您可以通过添加 Chrome 的命令行开关“--lang”来实现。

基本上,您只需要从 ChromeOption参数开始ChromeDriver,请参阅 API 了解详细信息。--lang=es

以下是如何使用 Selenium 以西班牙语启动 Chrome 的 C# 代码的工作示例。

ChromeOptions options = new ChromeOptions();
options.addArguments("--lang=es");
ChromeDriver driver = new ChromeDriver(options);

Java 代码应该几乎相同(未经测试)。请记住,此处的语言环境采用语言 [-country] 形式,其中语言是 ISO-639 中的 2 个字母代码。

public WebDriver getDriver(String locale){   
    System.setProperty("webdriver.chrome.driver", "driver/chromedriver.exe");
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--lang=" + locale);
    return new ChromeDriver(options);
}

public void initializeSelenium() throws Exception{
    driver = getDriver("es"); // two letters to represent the locale, or two letters + country
}
于 2013-09-05T21:11:29.103 回答
14

对我来说, --lang 没有用。似乎设置了第一个打开的选项卡的语言,所有其他 chrome 进程都以 --lang=en-US 启动。

起作用的是以下内容:

DesiredCapabilities jsCapabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<>();
prefs.put("intl.accept_languages", language);
options.setExperimentalOption("prefs", prefs);
jsCapabilities.setCapability(ChromeOptions.CAPABILITY, options);
于 2016-09-20T13:49:21.803 回答
7

我在使用美国日期格式 (mm/dd/yyyy) 而不是 GB dd/mm/yyyy 格式的 Chrome 时遇到问题(即使我已经在 Chrome 中设置了这些)。使用:

options.addArguments("--lang=en-GB");

解决了这个问题。

于 2015-12-16T13:30:00.070 回答
5

截至目前(2020 年 1 月 - Chrome 版本 79.0.3945.130)已接受答案中的 C# 不起作用。

我目前能找到在 C# 中工作的最简单方法:

ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("intl.accept_languages", language);
WebDriver driver = new ChromeDriver(chromeOptions);
于 2020-01-20T14:59:45.477 回答
4

我正在尝试相同的方法,上面列出的对我没有任何帮助,最后我尝试了以下方法并且它有效:

ChromeOptions chromeOptions = new ChromeOptions();

Map<String, Object> prefs = new HashMap<String, Object>();

prefs.put("intl.accept_languages", "ja-jp,ja");

chromeOptions.setExperimentalOption("prefs", prefs);

WebDriver driver = new ChromeDriver(chromeOptions);
于 2018-05-30T10:11:03.267 回答
3

对我来说--lang也没有工作。我想用特定语言(en-US 而不是 en-GB)执行 Facebook 登录测试,我发现某些页面(如 Facebook)根据系统环境变量设置界面LANG......所以如果上面的答案不起作用,尝试更改LANG环境变量。在 Linux 上测试。

于 2017-02-16T10:18:36.513 回答
1

我有同样的问题。我试图解决这个问题,包括

chromeOptions = Options()
chromeOptions.add_argument('--lang=es')

但它没有用(我发现没有必要)。

当我更改语言环境时它可以工作:

locale -a
sudo apt-get install language-pack-es
sudo dpkg-reconfigure locales

它是 es_ES.UTF-8 西班牙语的 UTF-8。最后,您必须启动一个新的 shell 以获取新的环境变量(LANG=C.UTF-8 到 es_ES.UTF-8)

于 2021-03-23T19:27:28.080 回答
0

对于将 Selenium 与 ruby​​ 一起使用的人:

我让它这样工作:

prefs_hash = {
       'credentials_enable_service' => false,
       'profile' => {
           'password_manager_enabled' => false,
       },
       'intl.accept_languages' => 'fr-FR', // <- here
    }

// [...]

browser = Watir::Browser.new :chrome, :prefs => prefs_hash, switches: switches, desired_capabilities: caps

于 2020-03-17T16:39:42.373 回答