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

问题描述 投票:0回答:3

我在使用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

ruby selenium selenium-webdriver webdriver
3个回答
0
投票

我在我的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

0
投票

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

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

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


0
投票

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

而不是使用

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

你必须使用

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

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

© www.soinside.com 2019 - 2024. All rights reserved.