【问题标题】:Disabling JavaScript when using Poltergeist and Capybara's default driver使用 Poltergeist 和 Capybara 的默认驱动程序时禁用 JavaScript
【发布时间】:2016-04-22 04:10:52
【问题描述】:

我的设置是使用 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 驱动程序是否有效?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rspec capybara poltergeist


    【解决方案1】:

    不,似乎没有办法在没有 Javascript 的情况下使用 poltergeist(除非您自己修改 poltergeist)。根据this Github issue 的说法,它需要phantomjs 中的支持,a patch 中提供,但 master 中没有。

    【讨论】:

    • 啊,真不幸。很高兴知道其他人也有这个问题。那个帖子是两年前的,所以不确定它是否会很快得到支持。看起来我只需要使用 capybara-webkit 之类的东西来进行非 js 测试。与selenium 相比有什么建议吗?
    • 并非专门用于非 JS 测试。一般I've had better luck with poltergeist than with capybara-webkit,但其他人有不同的经历。我对 Selenium 的经验较少。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 2016-07-15
    • 2015-07-03
    相关资源
    最近更新 更多