ruby-on-rails - 你如何使用 Minitest、Capybara、Selenium 执行 javascript 测试?

标签 ruby-on-rails ruby-on-rails-3 selenium capybara minitest

有很多关于如何使用 Capybara/Selenium/ 执行 javascript 测试的示例规范 您可以在其中编写如下测试:

it "does something", :js => true do
  ...
end

但是对于 迷你测试 您不能传递第二个参数来指示 selenium 执行测试。

有人对如何做到这一点有任何想法吗?

最佳答案

什么:js flag 做的很简单。它将当前驱动程序从默认(机架测试)切换到另一个支持 javascript 执行(selenium、webkit)的驱动程序。你可以在 minitest 中做同样的事情:

require "minitest/autorun"

class WebsiteTest < MiniTest::Unit::TestCase
  def teardown
    super
    Capybara.use_default_driver
  end

  def test_with_javascript
    Capybara.current_driver = :selenium
    visit "/"
    click_link "Hide"
    assert has_no_link?("Hide")
  end

  def test_without_javascript
    visit "/"
    click_link "Hide"
    assert has_link?("Hide")
  end
end

当然,为方便起见,您可以将其抽象为一个模块:
require "minitest/autorun"

module PossibleJSDriver
  def require_js
    Capybara.current_driver = :selenium
  end

  def teardown
    super
    Capybara.use_default_driver
  end
end

class MiniTest::Unit::TestCase
  include PossibleJSDriver
end

class WebsiteTest < MiniTest::Unit::TestCase
  def test_with_javascript
    require_js
    visit "/"
    click_link "Hide"
    assert has_no_link?("Hide")
  end

  def test_without_javascript
    visit "/"
    click_link "Hide"
    assert has_link?("Hide")
  end
end

关于ruby-on-rails - 你如何使用 Minitest、Capybara、Selenium 执行 javascript 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655154/

相关文章:

javascript - 如何将 activeadmin 查询字符串传递给batch_action?

ruby-on-rails - 在 rails 3 和 rails 4.1 之间共享 cookie

ruby-on-rails - Heroku语法错误;日志包含加扰的行号

ruby-on-rails-3 - 如何将 postgresql 列转换为 float 以在 rails 中进行范围搜索

javascript - 如何从 "then"链中的最后一个 promise 返回函数中的 promise

ruby-on-rails - 使用 Twitter/Facebook/Google 注册 Rails 用户?

ruby-on-rails - 在 Ruby on Rails 应用程序中开发和测试缓存的最佳方法是什么?

ruby-on-rails - RoR form_for 中的多项选择

python - Selenium WebDriverException 尝试保存屏幕截图时出错(Python 3.6)

Selenium-页面可见部分的截图