我有一个应用程序设计为禁用 JavaScript时仍然可用,所以我想写一些涵盖这些情况的规范. 我正在使用Selenium(Firefox)和Capybara,我正在注册一个禁用JavaScript的新驱动程序(通过Selenium的javascr
我正在使用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,则测试通过.因此,它似乎继承了我在浏览器中设置的任何配置,而不是实际使用注册驱动程序时指定的配置.
这是正确的做法,还是我错过了什么?
谢谢!
注册驱动程序时无法更改javascript.enabled设置,因为selenium将其冻结为true – https://github.com/SeleniumHQ/selenium/blob/master/javascript/firefox-driver/webdriver.json#L35 – 这是因为尝试使用selenium和firefox并且JS禁用 https://github.com/SeleniumHQ/selenium/issues/635时出现问题 – 并且不太可能被更改.你能用rack_test驱动程序运行那些特定的测试吗?或者它没有提供足够的功能?