2

我正在努力更新我们的硒测试以与 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={}>}

我仍然可以通过不使用配置文件初始化 webdriver 来运行测试,但是我们的一些测试会失败,因为它们需要我们有一个特定的用户代理。

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

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

4

1 回答 1

1

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

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

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

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

或者

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)

[:firefox_options]moz:firefoxOptions在代码中被翻译成

附带说明一下,您也可以使用旧版 FF 驱动程序而不是 geckodriver 运行,因为您运行的是 FF50

于 2016-12-06T02:46:16.863 回答