天天看點

Capybara 模拟真實使用者互動 測試 Web 應用

Capybara

通過模拟真實使用者互動的方式來測試你的 web 應用。它内置 Rack::Test 和 Selenium 支援,也支援其他驅動。WebKit 通過外部 gem 的形式支援。

Capybara 模拟真實使用者互動 測試 Web 應用

核心優勢

  • 無需配置 對于 Rails 和 Rack 應用而言,開箱即用。
  • 符合直覺的 API 模拟真實使用者行為。
  • 可替換後端 可以替換測試後端,例如從快速的 headless 模式切換到實際的浏覽器,無需更改測試。
  • 強力同步 你不用手動等待異步過程結束。

配置

Capybara 需要 Ruby 1.9.3+。在

Gemfile

中添加以下一行,然後運作

bundle install

gem 'capybara'

Rails 應用可以在 helper 檔案中加上這麼一行:

require 'capybara/rails'

Rack 應用:

Capybara.app = MyRackApp

如果需要測試 javascript 或進行遠端測試,還需要配置驅動。

Capybara 可以和 Cucumber、RSpec、Test::Unit、MiniTest::Spec配合使用。FIXME

Capybara 預設使用 RackTest 驅動,此外還支援 Selenium、Capybara-webkit、Poltergeist。

DSL

Capybara 的 DSL 十分易懂。我們來看幾個例子吧:

通路:

visit('/projects')

點選連結或按鈕:

click_link('id-of-link')

click_button('Save')

表單:

fill_in('First Name', :with => 'John')

fill_in('Password', :with => 'Seekrit')

fill_in('Description', :with => 'Really Long Text...')

choose('A Radio Button')

check('A Checkbox')

uncheck('A Checkbox')

attach_file('Image', '/path/to/image.jpg')

select('Option', :from => 'Select Box')

XPath

page.has_selector?(:xpath, '//table/tr')

查找

find_field('First Name').value

find('#navigation').click_link('Home')

部分驅動支援執行 JavaScript:

page.execute_script("$('body').empty()")

result = page.evaluate_script('4 + 4');

項目首頁

http://jnicklas.github.io/capybara/ https://github.com/jnicklas/capybara

繼續閱讀