LoginSignup
22
14

More than 1 year has passed since last update.

Capybaraメモ

Last updated at Posted at 2019-01-22

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という名前のアカウントを作成している。

22
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
14