我在尝试获得一个在selenium环境下运行黄瓜的例子时遇到了麻烦。我在跑
阅读https://github.com/jnicklas/capybara上的doco ,看来要在selenium下运行示例,我需要做的只是以下操作:
第1步:使用@javascript为场景添加前缀
@javascript Scenario: User does x ...
步骤2:配置env.rb,以告知capybara使用哪个驱动程序:
Capybara.javascript_driver = :selenium
当我跑步时:
bundle exec cucumber feature/myfeature.feature
我得到以下内容:
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
没有Firefox窗口。没有。它运行,悬挂和死亡。
因此,要检查Capybara和seleniumwebdriver是否正常工作,我编写了以下代码:
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
并使用以下命令运行它:
bundle exec ruby /tmp/test.rb
这样可行。Firefox打开窗口,然后浏览到http://codingdict.com/。
那么,如何获取诊断信息以了解Cucumber/Capybara的危害呢?
我正在运行OSX10,Ruby 1.8.7和Firefox 3.6.13。
好吧…我发现了我的问题。Cucumber碗中的某个地方依赖于DatabaseCleaner,当您使用 Selenium 驱动程序时,该依赖关系就会被触发一次。失败声明:
F______________F
告诉我失败是在设置和拆卸中发生的。黄瓜没有报告该异常,即使使用-b,它也无济于事。
我如何发现问题:
将ruby-debug添加为gem依赖项
将要求“ ruby-debug”添加到env.rb
我在env.rb中添加了以下语句:
Before do breakpoint; 0 end
使用bundle exec运行该功能。调试器启动了。
输入 cat StandardError,当抛出“StandardError”时,它将告诉调试器断点。StandardError是Cucumber中所有错误的基类。我们要做的是找出错误的出处和原因。
输入 cont 告诉调试器恢复
将数据库清理程序添加为gem依赖项之后,一切都消失了。Firefox开始启动,一切开始如广告中所述。