【发布时间】:2016-06-12 01:25:05
【问题描述】:
我有一个应用程序被设计为在禁用 JavaScript 时仍然可以运行,所以我想编写一些规范来涵盖这些情况。
我正在将 Selenium (Firefox) 与 Capybara 一起使用,并且我正在注册一个禁用 JavaScript 的新驱动程序(通过 Selenium 的 javascript.enabled 属性)
# spec/rails_helper.rb
Capybara.configure do |config|
config.ignore_hidden_elements = true
config.default_driver = :selenium
end
Capybara.register_driver :disable_js do |app|
profile = Selenium::WebDriver::Firefox::Profile.new
profile["javascript.enabled"] = false
Capybara::Selenium::Driver.new(app, profile: profile)
end
# spec/features/siging_in_spec.rb
context "JavaScript disabled", driver: :disable_js do
it "user can still sign in" do
# ...
# ...
end
end
功能规范未能真正禁用 JavaScript。当在测试期间弹出浏览器窗口并且我用binding.pry 暂停它时,我绝对可以单击我知道需要 JavaScript 的项目并查看它们是否正常工作。
旁注:如果我真的去我的 Firefox 设置并禁用 JavaScript,则测试通过。所以它似乎继承了我在浏览器中设置的任何配置,而不是实际使用注册驱动程序时指定的配置。
这是正确的方法,还是我错过了什么?
谢谢!
【问题讨论】:
-
作为替代选项,请尝试
noscriptextension - 很久以前就为我工作过。 -
请查看answer
标签: ruby-on-rails-3 selenium selenium-webdriver rspec capybara