我下载了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")
}
您可以通过添加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
}
对我来说,--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);
我在使用美国日期格式 (mm/dd/yyyy) 而不是 GB dd/mm/yyyy 格式的 Chrome 时遇到问题(即使我已在 Chrome 中设置了这些格式)。使用:
options.addArguments("--lang=en-GB");
解决了这个问题。
截至目前(2020 年 1 月 - Chrome 版本 79.0.3945.130),接受的答案中的 C# 不起作用。
我目前能找到的在 C# 中工作的最简单方法:
ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("intl.accept_languages", language);
WebDriver driver = new ChromeDriver(chromeOptions);
我正在尝试相同的方法,上面列出的对我来说没有任何作用,最后我尝试了下面的方法并且它起作用了:
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);
对我来说
--lang
也不起作用。我想使用特定语言(en-US 而不是 en-GB)执行 Facebook 登录测试,我发现某些页面(如 Facebook)根据系统环境变量设置界面LANG
...所以如果以上答案没有不起作用,尝试更改 LANG
环境变量。在 Linux 上测试。
对于最新版本,以下代码应该可以工作。
ChromeOptions options = new ChromeOptions();
options.addArguments("--accept-lang=" + locale);
return new ChromeDriver(options);
https://peter.sh/experiments/chromium-command-line-switches/#accept-lang
您需要设置
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);
我也有同样的问题。我尝试解决问题,包括
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)
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)
对于使用 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
使用最新版本的 Chrome 122.0.6261.129。 花了将近3个多小时才找到准确的答案。请使用下面 options.addArguments("--accept-lang=de-DE");