当前位置: 首页 > 面试题库 >

使用Capybara + Selenium时禁用JavaScript

孟正志
2023-03-14
问题内容

我有一个设计为在禁用JavaScript时仍能正常运行的应用程序,因此我想编写一些涵盖这些情况的规范。

我将Selenium(Firefox)与Capybara一起使用,并且正在注册一个禁用JavaScript的新驱动程序(通过Selenium的html" target="_blank">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-
这样做是因为尝试在禁用JS的情况下尝试使用selenium和firefox的问题https://github.com/SeleniumHQ/selenium/issues/635-不太可能更改。您可以只使用rack_test驱动程序运行那些特定的测试吗?还是没有提供足够的功能?



 类似资料:
  • 问题内容: 我想知道在使用selenium时如何禁用javascript,以便可以测试服务器端验证。 我找到了这篇文章,但我不知道该怎么做。就像我制作此javascript文件,然后呢? http://thom.org.uk/2006/03/12/disabling-javascript-from- selenium/ 问题答案: 编辑 在此期间,确实出现了更好的替代方法,请参见其他答案,例如 如

  • 我正在从恶作剧者迁移到无头铬的过程中。 有趣的是,当在聚焦元素后放置时,规范也通过了无头铬! 我在这里能做什么?我在正确的轨道上?我应该尝试https://github.com/twalpole/appariation驱动程序吗?

  • 问题内容: 关于如何使用Capybara / Selenium / Rspec 执行javascript测试的例子很多,您可以在其中编写如下测试: 但是,使用 minitest时, 您无法传递第二个参数来指示selenium执行测试。 有没有人对如何做到这一点有任何想法? 问题答案: 嗯,我注意到文档中有几行似乎说以上内容只能在Rspec中完成 但是,如果您使用的是 RSpec或Cucumber

  • 问题内容: 通常,我在端口3000上使用Rails开发服务器。 水豚/黄瓜使用。如果我从默认驱动程序交换到selenium,则看起来它尝试在端口80上进行连接。 我想了解: 使用selenium时,是否需要在测试环境中单独实例化测试服务器。 如果上述问题的答案是肯定的,那么我该如何做才能在Web驱动程序之间无缝切换而不必不断进行更改? 如果有人举了一个env.rb配置示例,可以帮助您,请告诉我!

  • 问题内容: 我在Rails项目(在Ubuntu 10.04系统上)中使用Capybaraselenium,并且现在在运行测试firefox负载时刚刚升级了firefox,但是现在它已安装了所有附加组件,并且一直等到我设置好每个人第一次。 启动selenium时是否可以禁用所有这些附加组件? 要么 有没有办法设置我所有的加载项并保存设置,以免每次运行测试时都提示我? 更新资料 如果我将其更改为使用c

  • 我想在safari中使用selenium进行测试。 不幸的是,当我尝试使用safari调试问题时,会出现一个通知,要求我在safari中禁用自动化或退出(附图)。 注意:我正在使用MacOs Catalina和Javascript