2012-07-02 39 views
6

Tôi đang cố gắng tải trình điều khiển chrome từ xa của mình để yêu cầu các trang bằng tiếng Đức thay vì tiếng Anh. Sau khi chromedriver documentationlist of chrome preferences, tôi đã cố gắng để thiết lập nó như thế này:WebDriver: Cách chỉ định ngôn ngữ ưa thích cho 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); 

Và tôi có thể nhìn thấy nó đạt chromedriver từ các log file:

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

Nhưng nó vẫn yêu cầu các trang tiếng Anh và điều này cũng có thể được xem bằng cách mở cài đặt nội dung trong tùy chọn. Tôi đang làm gì sai?

Trả lời

3

(Chỉnh sửa) câu chuyện dài ngắn:

  1. intl.accept_languages là chìa khóa sở thích để thao tác những gì ngôn ngữ được yêu cầu cho một trang.
  2. Đặt năng lực cho các ưu đãi sử dụng ChromeOptions cơ chế (mới hơn và ưu tiên) (nếu không nó sẽ không hoạt động nếu có ChromeOptions được thiết lập bởi bạn hoặc bindings ngôn ngữ của bạn, nhìn thấy vấn đề 104 & 95).

    Hỗ trợ ChromeOptions cho cài đặt tùy chọn chưa được triển khai hoàn toàn. Vì vậy, thật không may, bạn phải sử dụng các bẩn workaround từ tôi comment 6 to Issue 95

    Một thay thế có thể để tạo ra một hồ sơ cá nhân người sử dụng với các thiết lập ngôn ngữ mong muốn và sử dụng ChromeOption để thiết lập (command line) tùy chọn để sử dụng này hồ sơ, như đã đề cập trên chromedriver capabilities wiki page.

+0

Điều này làm cho rất nhiều ý nghĩa, đặc biệt là tôi t của cùng một firefox chính sử dụng. Nhưng nó không hoạt động, hoặc:/ – c089

+0

Vâng, bây giờ tôi có thể xác nhận nó cho các cuộc gọi từ python là tốt. Tôi đã thêm một số văn bản về những gì tôi nghĩ là sai (bao gồm báo cáo lỗi) và giải pháp thay thế/giải pháp thay thế cho đến khi nó được khắc phục. Nó có lẽ không phải là câu trả lời bạn mong đợi. Nhưng tôi hy vọng nó sẽ giúp phần nào, tuy nhiên. – zpea

+0

Cảm ơn nỗ lực của bạn và gửi lỗi :) – c089

0

Pyhon ví dụ

Lưu ý: tôi thử nghiệm nó với "en, en_US" ngôn ngữ được chấp nhận, nhưng tôi không hiểu tại sao nó sẽ không làm việc với de_DE miễn là miền địa phương hiện có sẵn trên hệ thống.

Công việc này với 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') 

Với mảnh vụn có 2 lựa chọn:

Splinter API chỉ

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 và selen 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') 
Các vấn đề liên quan