使用 Poltergeist 和 Capybara 的默认驱动程序时禁用 JavaScript

Disabling JavaScript when using Poltergeist and Capybara's default driver

我的设置使用 poltergeist 作为我所有测试的 Capybara 驱动程序,包括 JS 和非 JS。

# spec/rails_helper.rb
require "capybara/poltergeist"

# ...
# ...

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, js_errors: true)
end

Capybara.configure do |config|
  config.ignore_hidden_elements = true
  Capybara.default_driver = :poltergeist
  Capybara.javascript_driver = :poltergeist
end

我进行了一些测试,确认即使 javascript 禁用,我的应用程序中的某些功能仍然有效。对于这些测试,我当然会用 js: false.

禁用 javascript
describe "accessibility" do
  describe "JavaScript disabled", js: false do
    before(:each) { visit root_path }

    it "user can still log in" do
      # ...
    end
  end
end

但是,我注意到这些 js:false 测试 仍然使用 JavaScript。我可以通过在 JavaScript.

中将调试语句打印到控制台日志来确认这一点

有没有办法在使用 poltergeist 时禁用 JavaScript?还是始终启用?将 poltergeist 用作非 JS 驱动程序是否有效?

谢谢!

不,似乎没有办法在没有 Javascript 的情况下使用 poltergeist(除非您自己修改 poltergeist)。根据 this Github issue it would require support in phantomjs, which is available in a patch 但不是在 master.