Selenium Webdriver - 设置首选浏览器语言DE

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium Webdriver - 设置首选浏览器语言DE相关的知识,希望对你有一定的参考价值。

我在使用Selenium Webdriver和Ruby在无头Chrome中设置首选(接受的语言)时遇到问题。我使用以下WebDriver设置:

Selenium::WebDriver::Chrome.driver_path = @config[<path to the Chrome Driver>]

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-translate')
options.add_argument("--lang=de")

然后使用以下命令初始化驱动程序:

@selenium_driver = Selenium::WebDriver.for :chrome, options: options

一切正常但在某些页面,即使我导航到德语页面网址(例如page.de),Chrome也会返回英文内容。在这些情况下,由于内部转发到page.de/en,Chrome驱动程序会返回英文内容。我没有在查询的URL中指定en路径。

我尝试使用Webdriver首选项设置语言:

options.add_preference('accept_languages', 'de')

而不是add_argument但它不会改变任何行为。

有没有人知道如何强迫由Ruby内部的Selenium Webdriver控制的无头Chrome以定义的语言请求页面内容,或者 - 不是最佳但可能有助于解决方法 - 停止转发?

任何帮助非常感谢

最好

Krid

答案

我在我的test_helper.rb作品中使用这个对我来说很好。

Capybara.register_driver :selenium do |app|
  Chromedriver.set_version "2.36"

  desired_capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
    'chromeOptions' => {
      'prefs' => {
        'intl.accept_languages' => 'en-US'
     },
     args: ['disable-gpu', 'headless']
   }
  )

  Capybara::Selenium::Driver.new(app, { browser: :chrome, desired_capabilities: desired_capabilities })
end

Capybara.javascript_driver = :chrome
Capybara.default_driver = :selenium
另一答案

您应该可以通过添加实验选项来解决您的问题:

options.add_option('prefs', {'intl.accept_languages': 'en,en_US'})

我确信它适用于Python,但我没有尝试使用Ruby:这种方法是正确的,不确定实现。 您可以在this repository中找到在Python代码中处理问题的代码,在this Q&A中如何在Ruby中实现experimental_options

另一答案

我发现了一个适合我的解决方案。在许多情况下,问题是坐在屏幕前面,根本不能正常工作;-)

而不是使用

options.add_argument("--lang=de")

你必须使用

options.add_argument("--lang=de-DE")

当我使用IETF语言标记时,我最初发布的代码按预期工作。

以上是关于Selenium Webdriver - 设置首选浏览器语言DE的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ruby​​ 中使用 Selenium WebDriver (selenium 2.0) 客户端设置选项

如何在 selenium-webdriver 中为 phantomjs 驱动程序设置一个用户代理?

使用 selenium-webdriver/firefox (NodeJS) 设置 userAgent

Selenium WebDriver - 如何使用 C# 设置页面加载超时

在 Python 中使用 Remote WebDriver 设置 Chrome DevTools (Selenium 4)

Selenium Webdriver 动态设置 Proxy