一尘不染

selenium不适用于 Cucumber/Capybar (out of the box) - MacOSX

selenium

我在尝试获得一个在selenium环境下运行黄瓜的例子时遇到了麻烦。我在跑

  • Rails3
  • Cucumber 0.10.0
  • Capybara 0.4.1.2

阅读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。


阅读 216

收藏
2020-06-26

共1个答案

一尘不染

好吧…我发现了我的问题。Cucumber碗中的某个地方依赖于DatabaseCleaner,当您使用 Selenium 驱动程序时,该依赖关系就会被触发一次。失败声明:

F______________F

告诉我失败是在设置和拆卸中发生的。黄瓜没有报告该异常,即使使用-b,它也无济于事。

我如何发现问题:

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

  2. 将要求“ ruby​​-debug”添加到env.rb

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

Before do
    breakpoint; 0
end
  1. 使用bundle exec运行该功能。调试器启动了。

  2. 输入 cat StandardError,当抛出“StandardError”时,它将告诉调试器断点。StandardError是Cucumber中所有错误的基类。我们要做的是找出错误的出处和原因。

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

将数据库清理程序添加为gem依赖项之后,一切都消失了。Firefox开始启动,一切开始如广告中所述。

2020-06-26