Capybara メソッド一覧(抜粋)
locatorとは(前提知識)
Capybaraにおける要素の指定は、「locator文字列」によって操作対象の要素を指定する。locatorにはidやnameやinnerHTML(タグ名)などを指定できる
-
locatorに指定できる値
- 対象の要素id属性の値
- 対象の要素のname属性の値
- 対象の要素のinnerHTMLの値
- 対象の要素に対応する
<label>
の値(innerHTML)
書式
check('locator')
click_link('locator')
find('locator')
first('locator')
※locator部分には「locatorに指定できる値」を記述する
実例
check('#admin') # idがadminのチェックボックスにチェックする
click_link('New User') # New Userというラベルのリンクをクリック
find('div.actions input').click
# class属性actionsを持つ<div>タグ配下の<input>タグをクリック
first('tr td:nth-child(6)').click
# ページ全体で最初の<tr>タグ内の6番目の<td>タグをクリック
要素を操作するメソッド
メソッド | 動作 |
---|---|
visit | ページへアクセスする(GETリクエスト) |
check | チェックボックスをチェックする |
uncheck | チェックボックスのチェックを外す |
fill_in | テキストフォームに入力する |
select | セレクトボックスを選択する |
choose | ラジオボタンを選択する |
attach_file | ファイルセレクタにファイルを設定する |
click | クリックを実行する |
click_button | ボタンをクリックする |
click_link | リンクをクリックする |
click_on | ボタンかリンクをクリックする |
accept_alert | アラートのボタンをクリックする |
記述例
visit 'http://localhost:3000' # http://localhost:3000へアクセス
check('locator')
uncheck('locator')
fill_in('locator', with: 'hogehoge') # locatorにhogehogeという文字列を入力する
select('locator')
choose('locator')
attach_file('locator', 'Users/user/Desktop/local.png') # 絶対パスを記述
click('locator')
click_button('locator')
click_link('locator')
click_on('locator')
accept_alert # アラートを補足し、okボタンをクリックする
要素を検索する
メソッド | 動作 |
---|---|
find | 要素を検索する |
find_by_id | idを検索する |
all | 要素を検索し、全件取得 |
first | 最初に見つけた要素を取得 |
last | 最後に見つけた要素を取得 |
記述例
find('locator')
find_by_id('locator')
all('locator')
first('locator')
last('locator')
状態を確認する
メソッド | 動作 |
---|---|
have_content | 特定の文字列が表示されているか |
have_button | 特定のボタンを表示されているか |
have_css | 特定の要素があるかどうか |
記述例
have_content('locator')
have_button('locator')
have_css('selector')
matcher
メソッド | 動作 |
---|---|
expect() | 期待する |
to | 〜であること |
to_not | 〜でないこと |
not_to | to_notのエイリアス |
記述例
expect(page).to have_content 'hogehoge'
# 表示中のページに`hogehoge`という文字列が表示されているか検証
expect(page).to_not have_content 'piyopiyo'
# 表示中のページに`piyopiyo`という文字列が表示されていないか検証する。
OmniAuth-Facebookログインを偽装する
Rails.application.env_config['omniauth.auth'] = facebook_mock('tester')
Facebook公式へアクセスしなくてもFacebookアカウントでログインしている状態を実現するため、テストの時のみ使用する一時的なアカウントを作成する。
facebook_mock('tester')
でtester
という名前のアカウントを作成している。