如何正确配置rails测试在浏览器中运行它? (site_prism,cucumber,capybara,selenium webdriver) [英] How correctly config rails test to run it in browser? ( site_prism, cucumber, capybara, selenium webdriver )

查看:215
本文介绍了如何正确配置rails测试在浏览器中运行它? (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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆