2012-07-02 6 views
6

Ich versuche, meinen remote Chrome-Treiber dazu zu veranlassen, Seiten auf Deutsch statt auf Englisch anzufordern. die chromedriver documentation und list of chrome preferences folgenden habe ich versucht, es wie folgt zu setzen:WebDriver: So geben Sie bevorzugte Sprachen für Chrome an

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); 

Und ich kann sehen, es reicht chromedriver aus der Protokolldatei:

[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 
} 

Aber es fordert noch Englisch Seiten und kann dies auch durch Öffnen der Inhaltseinstellungen in den Einstellungen gesehen werden. Was mache ich falsch?

Antwort

3

(Edit) Lange Rede kurzer Sinn:

  1. intl.accept_languages ist die Vorlieben Schlüssel zu manipulieren, welche Sprachen für eine Seite angefordert.
  2. die Fähigkeit für die Präferenzen Stellen Sie den (neueren und bevorzugt) ChromeOptions Mechanismus (104 & 95 es sonst nicht funktionieren wird, wenn irgendwelche ChromeOptions eingestellt werden durch Sie oder Ihre Sprachbindungen finden Sie unter Probleme).

    Die ChromeOptions-Unterstützung für das Festlegen von Einstellungen ist noch nicht vollständig implementiert. Also leider müssen Sie die schmutzige Abhilfe verwenden von meinem comment 6 to Issue 95

    Ein Alternative könnte sein, ein Benutzerprofil mit den gewünschten Spracheinstellungen zu erstellen und verwenden ChromeOption die (Befehlszeile) Option zu setzen, diese zu verwenden Profil, wie auf der chromedriver capabilities wiki page erwähnt.

+0

Das macht sehr viel von Sinn, besonders als ich Es ist der gleiche Schlüssel, den Firefox benutzt. Aber es funktioniert auch nicht:/ – c089

+0

Ja, jetzt kann ich es auch für Aufrufe von Python bestätigen. Ich habe etwas Text hinzugefügt, was meiner Ansicht nach schief läuft (einschließlich eines Fehlerberichts) und was eine alternative Lösung/Workaround sein könnte, bis es behoben wird. Es ist wahrscheinlich nicht die erhoffte Antwort. Aber ich hoffe es hilft trotzdem etwas. – zpea

+0

Vielen Dank für Ihre Mühe und das Einreichen des Bugs :) – c089

0

Pyhon Beispiele

Hinweis: ich es testen mit „en, en_US“ akzeptiert die Sprache, aber ich sehe nicht, warum es mit de_DE nicht so lange arbeiten würde als locale auf verfügbar ist das System.

Diese Arbeit mit Selen

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') 

Mit Splitter gibt es 2 Möglichkeiten:

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 und Selen API nur

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')