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 ответа

Решение

(Изменить) Короче говоря:

  1. intl.accept_languages является ключом настроек для управления языками, запрашиваемыми для страницы.
  2. Установите возможность для предпочтений, используя (новые и предпочтительные) 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')
Другие вопросы по тегам