如何正确配置 Rails 测试以在浏览器中运行它?( site_prism, cucumber, capybara, selenium webdriver ) [英] How correctly config rails test to run it in browser? ( site_prism, cucumber, capybara, selenium webdriver )
问题描述
我正在为 Rails 应用程序编写测试,我使用 site_prism、capybara、selenium 和 cucumber.如何设置 Selenium 驱动程序以在浏览器 (firefox) 中运行我的测试?
I am writing test for rails app, I use site_prism, capybara, selenium and cucumber. How can I setup Selenium driver to run my tests in browser (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 配置文件:
This is my features/support/env.rb config file:
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 我可以像这样在浏览器中运行场景:
I know, with capybara I can run scenario in browser like this:
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 会话集成,但我该怎么做呢?
But! Using site_prism, I just have Page#load method. Maybe I need to integrate load method with capybara session, but how can I do this?
大多数情况下,我会按照文档(github 上的 cypabara wiki)中的描述执行所有操作,但我的测试在没有浏览器的情况下运行.我不明白为什么.
Mostly, I do everything as it's described in documentation (cypabara wiki on github), but my tests runs without browser. And I can't understand why.
请帮忙.谢谢.
推荐答案
其实你已经在 selenium 设置浏览器了:
Actually you've set up browser in selenium setting:
Capybara.register_driver :selenium do |app|
profile = Selenium::WebDriver::Firefox::Profile.new
Capybara::Selenium::Driver.new( app, :browser => :firefox, :profile => profile )
end
默认情况下,selenium 驱动程序使用 firefox 作为默认浏览器.您可以在水豚设置中进行设置:
By default selenium driver use firefox as default browser. You can set it in capybara settings:
Capybara.default_driver = :selenium
对于 site_prism,您需要这样的要求:
For site_prism you need such requirements:
require 'capybara'
require 'capybara/dsl'
require 'capybara/cucumber'
require 'selenium-webdriver'
require 'site_prism'
这篇关于如何正确配置 Rails 测试以在浏览器中运行它?( site_prism, cucumber, capybara, selenium webdriver )的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!