使用 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.
我的设置使用 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
.
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.