如何正确配置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驱动程序在浏览器(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#加载方法。也许我需要集成加载方法与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作为默认浏览器。
您可以在capybara设置中设置它:
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屋!