Selenium不适用于Cucumber/Capybara(开箱即用) - MacOSX

Blu*_*ish 5 macos selenium cucumber capybara ruby-on-rails-3

我在试图让一个黄瓜的例子在硒下运行时遇到了麻烦.我在跑

  • Rails3中
  • 黄瓜0.10.0
  • 水豚0.4.1.2

https://github.com/jnicklas/capybara上阅读doco ,似乎我需要在selenium下运行示例所需的全部内容如下:

第1步:使用@javascript为场景添加前缀

@javascript
Scenario: User does x
...
Run Code Online (Sandbox Code Playgroud)

步骤2:配置env.rb告诉capybara使用哪个驱动程序:

Capybara.javascript_driver = :selenium
Run Code Online (Sandbox Code Playgroud)

当我跑:

bundle exec cucumber feature/myfeature.feature
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

Using the default profile...
F------------F

Failing Scenarios:
cucumber features/myfeature.feature:7 # Scenario: User does x

1 scenario (1 failed)
12 steps (12 skipped)
0m0.012s
Run Code Online (Sandbox Code Playgroud)

没有firefox窗口.没有.它运行,挂起和死亡.

因此,为了检查水豚和selenium webdriver是否正常工作,我编写了以下代码:

require 'capybara'
require 'capybara/dsl'

Capybara.default_driver = :selenium

class Test
   include Capybara
   def dotest
     visit('http://www.stackoverflow.com')
   end
end

Test.new.dotest
Run Code Online (Sandbox Code Playgroud)

并运行它:

bundle exec ruby /tmp/test.rb
Run Code Online (Sandbox Code Playgroud)

这样可行.Firefox打开窗口并导航到www.stackoverflow.com.

那么我怎样才能获得诊断信息以了解黄瓜对水豚的作用?

我正在运行OSX10.,Ruby 1.8.7和Firefox 3.6.13.

Blu*_*ish 7

好的...我发现了我的问题.在黄瓜碗中的某个地方依赖于DatabaseCleaner,当您使用selenium驱动程序时,它会被触发一次.失败声明:

F______________F
Run Code Online (Sandbox Code Playgroud)

告诉我,故障发生在设置和拆解中.Cucumber没有报告异常,即使使用-b也没有做任何事情.

我是怎么发现这个问题的:

  1. 将ruby-debug添加为gem依赖项

  2. 添加需要"ruby-debug"到env.rb

  3. 我在env.rb中添加了以下语句:

Before do
    breakpoint; 0
end
Run Code Online (Sandbox Code Playgroud)
  1. 使用bundle exec运行该功能.调试器启动了.

  2. 输入cat StandardError,它会在抛出"StandardError"时告诉调试器断点.StandardError是Cucumber中所有错误的基类.我们想要做的是找出错误被抛出的地方和原因.

  3. 输入cont告诉调试器恢复

将database-cleaner作为gem依赖项添加后,一切都消失了.Firefox开始启动,事情就像宣传的那样开始工作.