2

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

例如,它是功能之一:


    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 我可以在浏览器中运行这样的场景:


      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 方法。也许我需要将加载方法与水豚会话集成,但我该怎么做呢?

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

请帮忙。谢谢。

4

1 回答 1

4

实际上,您已经在 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 设置中进行设置:

Capybara.default_driver = :selenium

对于 site_prism 你需要这样的要求:

require 'capybara'
require 'capybara/dsl'
require 'capybara/cucumber'
require 'selenium-webdriver'
require 'site_prism'
于 2013-10-07T16:58:24.827 回答