如何使用自定义配置文件注册Firefox驱动程序以与Capybara一起运行?

时间:2019-07-12 08:09:34

标签: ruby selenium selenium-webdriver capybara geckodriver

我尝试通过以下代码段为Firefox注册selenium驱动程序。实际上,我想设置自定义的用户代理,但是在启动浏览器后,用户代理看起来不像我预期的那样。有人可以看看有什么问题吗?非常感谢

我正在与 * GeckoDriver 0.24 * Firefox 67.0版 *水豚3.18.0 * Selenium WebDriver gem 3.142.3

Capybara.register_driver :selenium do |app|
browser = ENV['BROWSER']
  browser_sym = browser.to_sym

  options = {
    browser: browser_sym,
  }
if browser == :firefox
    profile = Selenium::WebDriver::Firefox::Profile.new
    profile['browser.download.folderList'] = 2   
    profile['browser.helperApps.neverAsk.saveToDisk'] = 'text/csv'
    profile['dom.max_script_run_time'] = Configuration['browser']['wait_time']
    profile['general.useragent.override'] = 'customized user-agent' 
    profile['dom.max_chrome_script_run_time'] = Configuration['browser']['wait_time']
    profile['dom.max_script_run_time'] = Configuration['browser']['wait_time']
    options[:profile] = profile 
elsif browser == :chrome 
.....
end 
Capybara::Selenium::Driver.new(app, options)

转到启动的浏览器,并通过命令navigator.userAgent从Firefox Dev Console检查返回结果,它将返回默认值而不是自定义的用户代理。

1 个答案:

答案 0 :(得分:0)

要在Firefox配置文件中设置用户代理,您的条件需要最终解决类似问题

Capybara.register_driver :ff do |app|
  profile = Selenium::WebDriver::Firefox::Profile.new
  profile['general.useragent.override'] = 'Random User Agent'

  opts = Selenium::WebDriver::Firefox::Options.new(profile: profile)

  Capybara::Selenium::Driver.new(app, browser: :firefox, options: opts)
end

您可以使用https://gist.github.com/twalpole/2f69984a5c6063aab04ea25c0aa3d2ca

中的代码自己运行它