我有一个设计为在禁用JavaScript时仍能正常运行的应用程序,因此我想编写一些涵盖这些情况的规范。
我将Selenium(Firefox)与Capybara一起使用,并且正在注册一个禁用JavaScript的新驱动程序(通过Selenium的javascript.enabled属性)
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的项目并看到它们正常工作。
binding.pry
旁注:如果我实际上进入Firefox设置并禁用了JavaScript,则测试通过。因此,它似乎继承了我在浏览器中设置的任何配置,而不实际使用注册驱动程序时指定的配置。
这是正确的方法,还是我错过了什么?
谢谢!
javascript.enabled注册驱动程序时无法更改设置,因为selenium会将其冻结为true- https://github.com/SeleniumHQ/selenium/blob/master/javascript/firefox- driver/webdriver.json#L35-这样做是因为尝试在禁用JS的情况下尝试使用selenium和firefox的问题https://github.com/SeleniumHQ/selenium/issues/635-不太可能更改。您可以只使用rack_test驱动程序运行那些特定的测试吗?还是没有提供足够的功能?