如何正确配置rails test以在浏览器中运行它? (site_prism,黄瓜,水豚,seleniumwebdriver)

我正在为rails app编写测试,我使用site_prism,capybara,selenium和cucumber。 如何设置Selenium驱动程序在浏览器(firefox)中运行我的测试?

例如,它是一个function:

Given /^I navigate to Dashboard page$/ do @page = DashboardPage.new # Dashboardpage is inheritor of SitePrism::Page @page.load @page.login_form.login_field.set 'admin' @page.login_form.password_field.set 'test' @page.login_form.signin_button.click @page.title.include? 'Dashboard' end 

这是我的features / support / env.rb配置文件:

 require 'cucumber/rails' require 'capybara' require 'capybara/cucumber' require 'selenium-webdriver' require 'site_prism' # cypabara settings Capybara.default_selector = :css Capybara.ignore_hidden_elements = false Capybara.default_wait_time = 20 Capybara.app_host = "http://0.0.0.0:9292" # selenium setting Capybara.register_driver :selenium do |app| profile = Selenium::WebDriver::Firefox::Profile.new Capybara::Selenium::Driver.new( app, :browser => :firefox, :profile => profile ) end # enable/disable rescue ActionController::Base.allow_rescue = false # DB cleaner strategy begin DatabaseCleaner.strategy = :transaction rescue NameError raise "You need to add database_cleaner to your Gemfile to use it." end # JS strategy Cucumber::Rails::Database.javascript_strategy = :truncation 

我知道,使用水豚我可以在浏览器中运行这样的场景:

 Capybara.app_host = 'http://0.0.0.0:9292' session = Capybara::Session.new(:selenium) session.visit '/home' session.driver.browser.quit 

但! 使用site_prism,我只有Page#load方法。 也许我需要将load方法与capybara会话集成,但我该怎么做呢?

大多数情况下,我会按照文档(github上的cypabara wiki)中的描述执行所有操作,但我的测试在没有浏览器的情况下运行。 我无法理解为什么。

请帮忙。 谢谢。

实际上你已经在selenium设置中设置了浏览器:

 Capybara.register_driver :selenium do |app| profile = Selenium::WebDriver::Firefox::Profile.new Capybara::Selenium::Driver.new( app, :browser => :firefox, :profile => profile ) end 

默认情况下,selenium驱动程序使用firefox作为默认浏览器。 您可以在水豚设置中进行设置:

 Capybara.default_driver = :selenium 

对于site_prism,您需要以下要求:

 require 'capybara' require 'capybara/dsl' require 'capybara/cucumber' require 'selenium-webdriver' require 'site_prism'