WebDriver: как указать предпочитаемые языки для 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 установлены вами или вашими языковыми привязками, см. проблемы 104 и 95).Поддержка настроек ChromeOptions еще не полностью реализована. Так что, к сожалению, вы должны использовать грязный обходной путь из моего комментария 6 к выпуску 95
Альтернативой может быть создание профиля пользователя с желаемыми языковыми настройками и использование ChromeOption для установки опции (командной строки) для использования этого профиля, как упомянуто на вики-странице возможностей chromedriver.
Примеры 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')
Со сплинтером есть 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')