【问题标题】:WebDriver: How to specify preferred languages for ChromeWebDriver:如何为 Chrome 指定首选语言
【发布时间】:2012-07-02 07:46:11
【问题描述】:

我正在尝试让我的远程 chrome 驱动程序以德语而不是英语请求页面。在chromedriver documentationlist of chrome preferences之后,我尝试这样设置:

    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
}

但它仍然请求英文页面,这也可以通过打开首选项中的内容设置来查看。我做错了什么?

【问题讨论】:

    标签: google-chrome webdriver selenium-chromedriver


    【解决方案1】:

    (编辑)长话短说:

    1. intl.accept_languages 是首选项键,用于控制页面请求的语言。
    2. 使用(较新和首选的)ChromeOptions 机制设置首选项的功能(否则,如果您或您的语言绑定设置了任何 ChromeOptions,它将不起作用,请参阅问题 @987654321 @&95)。

      ChromeOptions 对设置首选项的支持尚未完全实现。因此,不幸的是,您必须使用我的 comment 6 to Issue 95

      中的 dirty workaround

      替代方法可能是创建具有所需语言设置的用户配置文件,并使用 ChromeOption 设置(命令行)选项以使用此配置文件,如 chromedriver capabilities wiki page 中所述。

    【讨论】:

    • 这很有意义,特别是因为它与 Firefox 使用的键相同。但它也不起作用:/
    • 是的,现在我也可以确认来自 python 的调用了。我添加了一些关于我认为出错的文本(包括错误报告)以及在修复之前可能是替代解决方案/解决方法的内容。这可能不是您希望的答案。不过,我希望它有所帮助。
    • 感谢您的努力并提交错误 :)
    • 在我的新缩短答案中,还有一个指向 Java 示例的链接,用于解决 ChromeOptions 与“经典”功能问题以及 ChromeOptions 中缺乏首选项支持。让我知道它是否能解决您的问题! :)
    • 请注意,在无头模式下此首选项将被忽略!另见bugs.chromium.org/p/chromedriver/issues/detail?id=3992
    【解决方案2】:

    Pyhon 示例

    注意:我使用“en,en_US”接受的语言对其进行测试,但我不明白为什么只要系统上有可用的语言环境,它就不能与 de_DE 一起使用。 p>

    这与硒一起工作

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

    分裂和硒 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')
    

    【讨论】:

      猜你喜欢
      • 2019-02-05
      • 2013-03-27
      • 1970-01-01
      • 2022-08-14
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2020-12-21
      相关资源
      最近更新 更多