javascript - 运行 Cucumber 测试时禁用 JavaScript

标签 javascript selenium cucumber capybara

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

Capybara.register_driver :chrome 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" => {
        "binary" => chrome_binary + "/Contents/MacOS/Chromium"
      }
    )
    Capybara::Selenium::Driver.new(app, :browser => :chrome, :desired_capabilities => capabilities)
  end
end

Chrome 作为我的浏览器是否可行?

最佳答案

这是我为禁用 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 对象。

关于javascript - 运行 Cucumber 测试时禁用 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57473232/

相关文章:

javascript - For循环取javascript中对象属性的平均值

java - 元素未获得焦点且无法单击

cucumber - 为什么 cucumber 甚至支持 BDD 工具都需要 specflow

java - 如何点击网页元素?

java - 使用 Selenium 和 AutoIt 通过远程桌面实现自动化

java - 执行 Maven 时出错 - 不可解析的设置 settings.xml

java - 如何在 Cucumber 测试中部署 Localstack

javascript - 与 WebPack 捆绑时 knockout 验证中断

javascript - Ember 测试失败,返回 `testem.js not loaded?`

javascript - ReactJS:在 JQuery 事件监听器函数中调用 'this'