Selenium webdriver 使用Capybara的用户代理测试不起作用

Selenium webdriver 使用Capybara的用户代理测试不起作用,selenium-webdriver,capybara,Selenium Webdriver,Capybara,我希望使用模拟iphone的用户代理运行一些测试。目前,我在FF、Chrome和headless上运行测试,并将驱动程序定义为如下环境变量: when 'chrome' Capybara.default_selector = :css Capybara.default_driver = :selenium Capybara.run_server = false Capybara.register_driver :selenium do |app| Capybara::Sel

我希望使用模拟iphone的用户代理运行一些测试。目前,我在FF、Chrome和headless上运行测试,并将驱动程序定义为如下环境变量:

 when 'chrome'
  Capybara.default_selector = :css
  Capybara.default_driver = :selenium
  Capybara.run_server = false
  Capybara.register_driver :selenium do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
  end

 when 'headless'
  Capybara.default_driver    = :poltergeist
  Capybara.javascript_driver = :poltergeist
  Capybara.run_server = false
  Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {:inspector => true})
  end
因此,当我运行测试时,我只需输入BROWSER=chrome或BROWSER=headless,chrome或headless就会启动。我希望使用用户代理执行同样的操作,我已尝试了以下操作:

    when 'iphone'
      Capybara.register_driver :iphone do |app|
      require 'selenium/webdriver'
      profile = Selenium::WebDriver::Firefox::Profile.new
      profile['general.useragent.override'] = "iphone"
      Capybara::Driver::Selenium.new(app, :profile => profile)
然而,当我试着像这样运行我的测试:BROWSER=iphone时,我得到一条消息“rack test需要一个rack应用程序,但没有给出(ArgumentError)”。因此,我尝试通过在开始时添加默认驱动程序和javascript驱动程序来解决此问题,如下所示:

     when 'iphone'
      Capybara.default_selector = :css
      Capybara.default_driver = :selenium
      Capybara.run_server = false
      Capybara.register_driver :iphone do |app|
      require 'selenium/webdriver'
      profile = Selenium::WebDriver::Firefox::Profile.new
      profile['general.useragent.override'] = "iphone"
      Capybara::Driver::Selenium.new(app, :profile => profile)
但这只会导致启动默认的FF浏览器。有人知道我该如何让它工作,或者我做错了什么吗?我找到了这篇文章:并试图跟随它,但没有运气


任何帮助都将不胜感激

要不运行服务器,应设置:

Capybara.run_server = false
Capybara.default_driver = :iphone
要将默认驱动程序设置为:iphone,应设置:

Capybara.run_server = false
Capybara.default_driver = :iphone
因此,完整的设置将是:

when 'iphone'
  Capybara.register_driver :iphone do |app|
    require 'selenium/webdriver'
    profile = Selenium::WebDriver::Firefox::Profile.new
    profile['general.useragent.override'] = "iphone"
    Capybara::Driver::Selenium.new(app, :profile => profile)
  end
  Capybara.default_driver = :iphone
  Capybara.run_server = false

请注意,最好使用或代替已通过用户代理的Firefox

谢谢您的回复Andrey。然而,当我使用您的建议时,我收到了错误:未初始化常量Capybara::Driver::Selenium(NameError)。有什么想法吗?关于您关于使用ios驱动程序或appium的建议,目前我们的应用程序完全基于web(不是本机或混合),但设计用于移动设备浏览器,因此我认为用户代理测试可能是一个不错的选择。有趣的是,我没有要求“水豚”。我将其添加到我的env文件中,但仍会出现相同的错误:-(成功地使其工作,而不是:Capybara::Driver::Selenium.new(应用程序,:profile=>profile),我改为:Capybara::Selenium::Driver.new(应用程序,:profile=>profile),测试现在正在工作,-感谢您的帮助Andrey@user1523236对不起,我没注意到