使用 Selenium ChromeDriver 设置 Chrome 的语言

问题描述 投票:0回答:12

我下载了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")
}
java google-chrome selenium webdriver selenium-webdriver
12个回答
36
投票

您可以通过添加Chrome的命令行开关“--lang”来做到这一点。

基本上,您所需要的只是以

ChromeOption
参数 ChromeDriver 开始
--lang=es
,有关详细信息,请参阅 API。

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

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

Java 代码应该几乎相同(未经测试)。请记住,此处的区域设置采用语言[-国家/地区] 的形式,其中语言是 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
}

15
投票

对我来说,--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);

9
投票

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

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

解决了这个问题。


7
投票

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

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

ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("intl.accept_languages", language);
WebDriver driver = new ChromeDriver(chromeOptions);

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);

3
投票

对我来说

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


3
投票

对于最新版本,以下代码应该可以工作。

ChromeOptions options = new ChromeOptions();
options.addArguments("--accept-lang=" + locale);
return new ChromeDriver(options);

https://peter.sh/experiments/chromium-command-line-switches/#accept-lang


3
投票

来自 Chrome v117

您需要设置

intl.selected_languages
&
intl.accept_languages
,

ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<>();
prefs.put("intl.accept_languages", language); //language: "es"
prefs.put("intl.selected_languages", language);
options.setExperimentalOption("prefs", prefs);

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)


1
投票
website = 'https://e-katalog.lkpp.go.id/id/search-produk?q=' + mylist[i] + 
                                 '&order=relevance&limit=12&offset=' + str(1)
chrome_options = Options()
chrome_options.add_argument("--lang=en");
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])

prefs = {
          "translate_whitelists": {'id':'en'},
          "translate":{"enabled":"True"}}
chrome_options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome('C:\webdrivers\chromedriver.exe',options=chrome_options)
time.sleep(10)
driver.get(website)
time.sleep(5)

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


0
投票

使用最新版本的 Chrome 122.0.6261.129。 花了将近3个多小时才找到准确的答案。请使用下面 options.addArguments("--accept-lang=de-DE");

© www.soinside.com 2019 - 2024. All rights reserved.