Ruby 使用geckodriver v0.11在Firefox中设置用户代理

Ruby 使用geckodriver v0.11在Firefox中设置用户代理,ruby,selenium,firefox,geckodriver,Ruby,Selenium,Firefox,Geckodriver,我正在更新我们的selenium测试,使之与Firefox v50.x兼容,因此我需要使它们与geckodriver v0.11兼容 现在看来,使用Firefox::Profile初始化webdriver会导致webdriver崩溃,因为它无法识别配置文件中设置的任何字段: ArgumentError unknown option: {:profile=>#<Selenium::WebDriver::Firefox::Profile:0x00000005088bf8 @model="

我正在更新我们的selenium测试,使之与Firefox v50.x兼容,因此我需要使它们与geckodriver v0.11兼容

现在看来,使用Firefox::Profile初始化webdriver会导致webdriver崩溃,因为它无法识别配置文件中设置的任何字段:

ArgumentError
unknown option: {:profile=>#<Selenium::WebDriver::Firefox::Profile:0x00000005088bf8 @model="selenium_profile", @native_events=false, @secure_ssl=false, @untrusted_issuer=true, @load_no_focus_lib=false, @additional_prefs={}, @extensions={}>}
参数错误
未知选项:{:profile=>#}
我仍然可以通过不使用配置文件初始化webdriver来运行测试,但是我们的一些测试会失败,因为它们要求我们有一个特定的用户代理

在阅读了文档之后,似乎您现在应该使用moz:firefoxOptions来实现此功能,但我找不到任何代码示例来说明如何实际使用moz:firefoxOptions实现任何功能


有谁能给我一个代码示例,演示如何使用moz:firefoxOptions或任何其他方式将firefox用户代理设置为selenium webdriver 3.0.3和geckodriver v0.11?

目前,您无法通过geckodriver的profile选项传递配置文件。这在中有文档记录,我目前在中有一个用于添加此功能的PR()

现在,您应该能够执行以下操作:

通过以下任一方法创建配置文件:

profile = Selenium::WebDriver::Firefox::Profile.new('/path/to/profile')

然后

[:firefox\u options]
在代码中被翻译成
moz:firefoxOptions


另一方面,您也可以使用传统的FF驱动程序而不是geckodriver,因为您的对手是FF50

谢谢!在firefox中为我们希望使用的不同用户代理创建几个配置文件有点麻烦,但这似乎是可行的
profile = Selenium::WebDriver::Firefox::Profile.from_name('name_of_profile')
caps = Selenium::WebDriver::Remote::W3CCapabilities.firefox
caps[:firefox_options] = { profile: profile.as_json['zip'] }
driver = Selenium::WebDriver.for(:firefox, desired_capabilities: caps)