我在使用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
型
一切正常,但在某些页面上,即使我导航到德语页面的URL,Chrome也会返回英文内容(例如:page.de)。在这些情况下,由于内部转发到www.example.com,Chrome驱动程序返回英文内容page.de/en。我没有在查询的URL中指定en路径。
我尝试使用Webdriver首选项设置语言:
options.add_preference('accept_languages', 'de')
型
而不是add_argument,但它不会改变任何行为。
有没有人知道如何强制Ruby中由Selenium Webdriver控制的无头Chrome以定义的语言请求页面内容,或者-不是最佳的,但它可能有助于作为一种解决方案-停止转发?
任何帮助非常感谢
最佳
克里德
6条答案
按热度按时间p8h8hvxi1#
我找到了一个适合我的解决方案。在许多情况下,问题是坐在屏幕前,根本没有足够精确地工作;- )
而不是使用
字符串
你必须使用
型
当我使用IETF语言标记时,我最初发布的代码可以按预期工作。
jvlzgdj92#
我在我的
test_helper.rb
中使用这个对我来说很好。字符串
siotufzp3#
这个
prefs
散列在options
散列中对我来说很有用。它位于driven_by :selenium
行的末尾。(内部
test/application_syste_test_case.rb
)字符串
2021-06-14更新:
上一个示例生成以下弃用警告:
WARN Selenium [DEPRECATION] :prefs is deprecated. Use Selenium::WebDriver::Chrome::Options#add_preference instead.
个IMO,下面的解决方案是丑陋的,但我张贴时,它是完全弃用和原来的停止工作.
型
blmhpbnm4#
你应该可以通过添加一个 experimental option 来解决你的问题:
字符串
我确信它可以在Python上工作,但我没有在Ruby上试过:这种方法是正确的,不确定实施。
您可以在this repository中找到处理Python代码中问题的代码,以及在this Q&A中找到如何在Ruby中实现experimental_options
cs7cruho5#
为我工作:
字符串
zpjtge226#
字符串
这应该有助于设置语言为英语的chrome无头模式