如何在Capybara中更改Cucumber测试的测试默认驱动程序?

时间:2012-05-09 01:31:45

标签: ruby-on-rails cucumber capybara

Capybara提供的文档中,您可以更改特定测试组的default_driver:

describe 'some stuff which requires js', :js => true do
  it 'will use the default js driver'
  it 'will switch to one specific driver', :driver => :selenium
end

如果我想为特定的黄瓜测试组做这个怎么办?我该如何添加这些参数?

When /^I do something$/  do
  fill_in "a_text_box", :with => "stuff"
  fill_in "another_text_box", :with => "another_thing"
end

谢谢!

3 个答案:

答案 0 :(得分:5)

Capybara.current_driver = :webkit # temporarily select different driver
#... tests ...
Capybara.use_default_driver       # switch back to default driver

答案 1 :(得分:5)

在黄瓜中,我分两步完成了这个步骤:

/features/support/env.rb中,放置以下行:

Capybara.javascript_driver = :webkit

然后在黄瓜特征中,就在特定场景之前,在场景之前添加@javascript - 如下所示:

@javascript
Scenario: Successful sign in - with no flash message if using current firefox
When I'm using a current version of Firefox
When I visit the practitioner home page with "jane.doe@example.com"'s token
Then I should be signed in as practitioner "Jane Doe"
And I should be on the practitioner activities welcome page
And I should not see a flash message warning me I have an unsupported browser

这会告诉黄瓜在运行该特定方案时使用javascript驱动程序。

这就是我使用Capybara Webkit完成此操作的方法 - 我确信其他驱动程序类似。

答案 2 :(得分:0)

使用黄瓜,您可以使用标签实现此目的。例如,如果您的默认驱动程序是webkit,但是您希望使用selenium运行某些方案,则可以使用@selenium对其进行标记。这默认情况下适用于gem 'selenium-webdriver'

一般情况下,如果您想切换到其他驱动程序(本示例中为Headless chrome),请将以下代码放入features/support/drivers.rb

# features/support/drivers.rb
Around '@headless_chrome' do |scenario, block|
  begin
    Capybara.current_driver = :headless_chrome # temporarily select headless chrome
    block.call
  ensure
    Capybara.use_default_driver                # switch back to default webkit driver
  end
end