- ページに移動
visit '/pages/new'
- フォームに値を入力
fill_in 'id_or_label_text', with: 'yamada'
- ラジオボタンを選択
choose 'ラジオボタン1'
- チェックボックスをチェック/非チェック
check('チェックボックス1')
uncheck('チェックボックス1')
- ファイルの添付
attach_file 'file', "#{fixture_path}/xxx.csv"
最近はinput type=fileを隠してボタンを上に出してたりすることが多いので、その場合はvisible: false
が必要
attach_file 'file', "#{fixture_path}/xxx.csv", visible: false
- セレクトボックスで選択
select('カテゴリ1', from: 'カテゴリ')
- ボタンまたはリンクをクリック
click_on 'ボタンまたはリンク'
- 現在のページを確認
current_path.should == '/pages/1'
- Http Statusを確認
page.status_code.should be(200)
- タイトルタグの検証
page.should have_title('たいとる')
- ページ内に期待する文字列が(ある|ない)か確認
should have_content '登録されました'
should have_no_content 'エラーがしました'
- チェックボックス(radio)がチェックされて(いる|いない)
have_checked_field
have_unchecked_field
- selectの値を検証する
page.should have_select('name', selected: 'selected_value')
- inputの値を検証する
should have_field('id_or_label', with: 'value')
- テーブルの行数を検証する
all('#table_id tr').should have(0).rows
page.should have_css("table#table_id tbody tr", count: 0)
- 表示・非表示の検証をする
find('#css_selecter').should be_visible
- disabledかを検証する
expect(page).to have_checked_field '選択肢1', disabled: true
expect(page).to have_button '登録', disabled: true
- テーブルが存在するか
should have_table('table')
- セレクターを使った検証
should have_selector('button', value: '実行')
should have_selector('h1#title', :content=>'Hello!')
should have_css('#status.current')
- ボタンが存在するか
find('#navigation').should have_button('Sign out')
- ある要素が表示されているか
should have_selector('#hoge_area', visible: true)
- 現在のページをブラウザで表示
save_and_open_page
- debuggerを起動
binding.pry
- xpath引数を使ったfind
find(:xpath, '//li[contains(.//a[@href = "#"]/text(), "foo")]').value
- xpath引数を使ったfind
- containsを使う事でclassに複数指定があってもヒットする
all(:xpath, "//a[contains(@class, 'target-class-name') and contains(text(), 'リンク名')]")
- findした要素の値をshouldではなく参照する
find('#id').text
- ボタンクリックする時にclick_on以外を使う
find('#id').click
click_button 'id_or_label'