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


(редактировать) короче:

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