运行Cucumber测试时禁用JavaScript

时间:2019-08-13 07:42:02

标签: javascript selenium cucumber capybara

我正在使用Capybara和Cucumber运行一些集成测试,其中之一需要禁用JavaScript,我可以通过使用开发人员工具并禁用JS(Chrome)来手动实现此目的,但是如何实现此过程的自动化。我想要一个启用JS禁用或启用/禁用中间测试的浏览器启动选项

var result = 
[
 {label:'a name value',value:"a id value",
 children:[{label:"b name value",value:"b parentId value"}]
 },
 ...
]

使用Chrome作为我的浏览器可以做到吗?

1 个答案:

答案 0 :(得分:1)

为什么当您发布问题时,几分钟后您就会发现问题。对于有兴趣的人,这就是我为禁用JS所做的事情

Capybara.register_driver :js_disabled do |app|
  chrome_binary = ENV["HENDRICKS_CHROME_BINARY"]

  if chrome_binary.nil?
    Capybara::Selenium::Driver.new(app, :browser => :chrome)
  else
    capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
      "chromeOptions" => {
        "prefs" => {
          'profile.managed_default_content_settings.javascript' => 2
        },
        "binary" => chrome_binary + "/Contents/MacOS/Chromium"
       }
    )
    Capybara::Selenium::Driver.new(app, :browser => :chrome, :desired_capabilities => capabilities)
  end
end

请注意通过chromeOptions传递的prefs对象