2012-07-02 1 views
6

Я пытаюсь заставить мой драйвер удаленного хрома запрашивать страницы на немецком, а не на английском. После chromedriver documentation и list of chrome preferences, я попытался установить это следующим образом:WebDriver: Как указать предпочтительные языки для 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 
} 

Но он по-прежнему требует страниц на английском, и это также может можно увидеть, открыв настройки содержимого в настройках. Что я делаю не так?

ответ

3

(Edit) Короче говоря:

  1. intl.accept_languages является ключом предпочтения, чтобы управлять тем, что языки запрашиваются для страницы.
  2. Установите возможности для настройки, используя (новые и предпочтительный) ChromeOptions механизм (в противном случае он не будет работать, если какие-либо ChromeOptions установлены вами или вашими языковыми привязками см Вопросы 104 & 95).

    Поддержка ChromeOptions настроек настроек еще не полностью реализована. Так, к сожалению, вы должны использовать грязные обходной от моего comment 6 to Issue 95

    альтернативы может быть, чтобы создать профиль пользователя с нужными параметрами языка и использовать ChromeOption для установки (командной строки), возможности использовать этот профиль, как указано на chromedriver capabilities wiki page.

+0

Это делает много смысла, особенно, поскольку i t использует тот же самый ключ firefox. Но это не работает:/ – c089

+0

Да, теперь я могу подтвердить его и для звонков с питона. Я добавил немного текста о том, что, по моему мнению, идет не так (включая отчет об ошибке), и что может быть альтернативным решением/обходным решением, пока оно не будет исправлено. Вероятно, это не тот ответ, на который вы надеялись. Но я надеюсь, что это поможет, тем не менее. – zpea

+0

Спасибо за ваши усилия и подали ошибку :) – c089

0

примеры Pyhon

Примечание: я проверить его с «эн, 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')