2012-07-02 3 views
6

J'essaie d'obtenir que mon pilote chrome distant demande des pages en allemand plutôt qu'en anglais. Suite à la chromedriver documentation et list of chrome preferences, j'ai essayé de le régler comme ceci:WebDriver: Comment spécifier les langues préférées pour 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); 

Et je peux le voir atteint chromedriver à partir du fichier journal:

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

Mais il demande encore des pages en anglais et cela peut aussi être vu en ouvrant les paramètres de contenu dans les préférences. Qu'est-ce que je fais mal?

Répondre

3

(Edit) Longue histoire courte:

  1. intl.accept_languages est la clé de préférences pour manipuler quelles langues sont demandées pour une page.
  2. Définir la capacité pour les préférences en utilisant la (nouvelle et préféré) ChromeOptions mécanisme (sinon il ne fonctionnera que si les ChromeOptions sont fixés par vous ou vos liaisons linguistiques, voir les questions 104 & 95).

    La prise en charge de ChromeOptions pour la définition des préférences n'est pas encore complètement implémentée. Donc, malheureusement, vous devez utiliser la solution sale de mon comment 6 to Issue 95

    Une autre pourrait être de créer un profil d'utilisateur avec les paramètres de langue souhaités et utiliser ChromeOption pour définir l'option (ligne de commande) pour utiliser cette profil, comme mentionné sur le chromedriver capabilities wiki page.

+0

Cela fait beaucoup de sens, surtout comme je C'est la même chose que Firefox utilise. Mais ça ne marche pas non plus:/ – c089

+0

Ouais, maintenant je peux aussi le confirmer pour les appels de python. J'ai ajouté du texte sur ce qui ne va pas (y compris un rapport de bug) et ce qui pourrait être une alternative/solution de contournement jusqu'à ce qu'il soit corrigé. Ce n'est probablement pas la réponse que vous espériez. Mais j'espère que cela aide un peu, néanmoins. – zpea

+0

Merci pour vos efforts et le dépôt du bogue :) – c089

0

exemples Pyhon

Note:-je tester avec « en, en_US » langue acceptée, mais je ne vois pas pourquoi cela ne marcherait pas avec de_DE aussi longtemps que locale est disponible sur le système.

Ce travail avec le sélénium

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

Avec écharde il y a 2 options:

API Splinter ne

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 et API de sélénium

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