我按照this guy建议的方式设置我的env.rb。我在本地启动我的应用程序,当我运行时 firefox = true bundle exec cucumber features / 01_login.feature 我得到以下
无法加载此类文件 - capybara / poltergeist(LoadError) /Users/gabrielpumple/bi/features/support/env.rb:3:in
require' /Users/gabrielpumple/bi/features/support/env.rb:3:in
' /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/gems/cucumber-1.3.10/lib/cucumber/rb_support/rb_language.rb:122:inload' /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/gems/cucumber-1.3.10/lib/cucumber/rb_support/rb_language.rb:122:in
load_code_file” /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/gems/cucumber-1.3.10/lib/cucumber/runtime/support_code.rb:180:inload_file' /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/gems/cucumber-1.3.10/lib/cucumber/runtime/support_code.rb:83:in
块中的load_files!' /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/gems/cucumber-1.3.10/lib/cucumber/runtime/support_code.rb:82:ineach' /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/gems/cucumber-1.3.10/lib/cucumber/runtime/support_code.rb:82:in
load_files!” /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/gems/cucumber-1.3.10/lib/cucumber/runtime.rb:184:inload_step_definitions' /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/gems/cucumber-1.3.10/lib/cucumber/runtime.rb:42:in
跑了!” /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/gems/cucumber-1.3.10/lib/cucumber/cli/main.rb:47:inexecute!' /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/gems/cucumber-1.3.10/bin/cucumber:13:in
” /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/bin/cucumber:23:inload' /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/bin/cucumber:23:in
” /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/bin/ruby_executable_hooks:15:ineval' /Users/gabrielpumple/.rvm/gems/ruby-1.9.3-p547/bin/ruby_executable_hooks:15:in
“
我已经安装了poltergeist / phantomjs并运行了bundle install。我的同事和我在chrome中正常运行测试,但我们需要使用不同的浏览器运行它们。任何帮助是极大的赞赏。
答案 0 :(得分:0)
好吧,我从一位同事那里得到了一些帮助,现在测试是在firefox中运行的,希望很快就可以了。以下是他如何更改env.rb文件
require 'cucumber/rails'
Capybara.default_selector = :css
cb = ENV['CURRENT_BROWSER']
testbrowser = cb ? cb.downcase.to_sym : :firefox
puts "-------------- current browser: #{testbrowser}........."
Capybara.register_driver :selenium do |app|
if RbConfig::CONFIG['host_os'][/linux/] && testbrowser.to_s.eql?("CHROME".downcase)
Capybara::Selenium::Driver.new(app, {:browser => :remote, :url => "http://127.0.0.1:9515"})
else
if testbrowser.eql?(:chrome)
Capybara::Selenium::Driver.new(app, :browser => :chrome, :switches => %w[--test-type])
elsif testbrowser.eql?(:safari)
Capybara::Selenium::Driver.new(app, :browser => :safari, :switches => %w[--test-type])
elsif testbrowser.eql?(:internetexplorer)
Capybara::Selenium::Driver.new(app, :browser => :internetexplorer, :switches => %w[--test-type])
else
Capybara::Selenium::Driver.new(app, :browser => testbrowser)
end
end
end
ActionController::Base.allow_rescue = false
begin
DatabaseCleaner.strategy = :transaction
rescue NameError
raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end
Cucumber::Rails::Database.javascript_strategy = :truncation
然后当我从命令行运行一个功能时,我使用
bundle exec cucumber CURRENT_BROWSER=chrome feature/myFeature.feature
适用于Chrome,或
bundle exec cucumber feature/myFeature.feature
for Firefox(默认)。歌剧司机仍然不想为我工作,只有1%的人使用它,所以我并不担心,Safari驱动程序不支持模态交互,所以如果你的测试需要验证窗口或与故意失败的交互说在登录时,safari赢了工作。我保留了Safari选项,以防他们更新Safari驱动程序,或者如果我有一个非常简单的测试,我希望能够运行。我看到它在IE上是否正常工作后我会更新。