如何在 RSpec 中同时使用 selenium 和 poltergeist?

How to use selenium and poltergeist together in RSpec?

我的应用程序中有一个丰富的前端。由于动画和 AJAX 请求,我的一些测试在 poltergeist 上效果不佳,但在 selenium 上效果很好。

如何在一个项目和一个测试会话中同时使用它们?

我找到了解决方案。

在 spec/support/selenium_macros.rb:

中创建了宏
module SeleniumMacros
  def use_selenium_webdriver
    before(:all) do
      Capybara.javascript_driver = :selenium
      Capybara.current_driver = :selenium
    end

    after(:all) do
      Capybara.current_driver = :poltergeist
      Capybara.javascript_driver = :poltergeist
    end
  end
end

spec/rails_helper.rb

RSpec.configure do |config|
  config.extend SeleniumMacros, type: :feature # add macros for acceptance tests

使用示例 spec/features/example_feature_spec.rb

feature 'Add files to question' do

  use_selenium_webdriver

此功能将与 selenium 一起使用,执行后会激活 poltergeist webdriver。

P.S。对不起我的英语。

如果您将标准 RSpec 配置与水豚一起使用(需要 'capybara/rspec'),那么您可以使用 :driver 元数据覆盖将用于给定测试的普通驱动程序

it "should do something", driver: :selenium do
  # will use the selenium driver for this test
end

it "should do something else", driver: :poltergeist do
  # will use the poltergeist driver for this test
end

如果您希望整个功能使用特定驱动程序,也可以在封闭功能上指定

feature "blah balh", driver: :selenium do
  # all scenarios here would use the selenium driver unless overridden with their own :driver metadata