WebDriver: как указать предпочтительные языки для Chrome
Я пытаюсь заставить мой удаленный драйвер chrome запрашивать страницы на немецком языке вместо английского. После документация chromedriver и список настроек chrome, Я попытался установить его, как это:
capabilities.setCapability(ChromeOptions.CAPABILITY, getChromeOptions());
Map<String, String> chromePrefs = new HashMap<String,String>();
chromePrefs.put("settings.language.preferred_languages", "de-DE,de");
capabilities.setCapability("chrome.prefs", chromePrefs);
и я вижу, что он достигает chromedriver из файла журнала:
[0.453][FINE]: Initializing session with capabilities {
"browserName": "chrome",
"chrome.prefs": {
"settings.language.preferred_languages": "de-DE,de"
},
"chromeOptions": {
"args": [ "--ignore-certificate-errors" ],
"extensions": [ ]
},
"platform": "ANY",
"version": null
}
но он по-прежнему запрашивает английские страницы, и это также можно увидеть, открыв Настройки содержимого в настройках. Что я делаю не так?
2 ответов
(редактировать) короче:
-
intl.accept_languages
является ключом настроек для управления тем, какие языки запрашиваются для страницы. -
установите возможность для предпочтений, используя (более новый и предпочтительный)
ChromeOptions
механизм (в противном случае он не будет работать, если какие-либо ChromeOptions установлены вами или вашими языковыми привязками, см. Issues 104 & 95).поддержка ChromeOptions для настройки настроек еще не полностью реализована. Поэтому, к сожалению, вы должны использовать грязный временное решение от меня комментарий 6 к выпуску 95
An альтернатива может быть, чтобы создать профиль пользователя с нужными языковыми настройками и использовать ChromeOption, чтобы установить опцию (командная строка), чтобы использовать этот профиль, как указано на возможности chromedriver wiki страница.
примеры Pyhon
Примечание: Я тестирую его с помощью принятого языка "en, en_US", но я не вижу, почему он не будет работать с de_DE, пока локаль доступна в системе.
эта работа с селеном
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from splinter.driver.webdriver import BaseWebDriver, WebDriverElement
options = Options()
options.add_experimental_option('prefs', {'intl.accept_languages': 'de_DE'})
browser = BaseWebDriver()
browser.driver = Chrome(chrome_options=options)
browser.visit('http://example.com')
С splinter есть 2 варианта:
Splinter API только
from splinter import Browser
from splinter.driver.webdriver.chrome import Options
options = Options()
options.add_experimental_option('prefs', {'intl.accept_languages': 'de_DE'})
browser = Browser('chrome', options=options)
browser.visit('http://example.com')
Splinter и селен API
from splinter import Browser
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {'intl.accept_languages': 'de_DE'})
browser = Browser('chrome', options=options)
browser.visit('http://example.com')