Selenium webdriver 使用Capybara的用户代理测试不起作用
我希望使用模拟iphone的用户代理运行一些测试。目前,我在FF、Chrome和headless上运行测试,并将驱动程序定义为如下环境变量: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
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对不起,我没注意到