私は問題なくカピバラで埋めることができる適切なラベルのあるフィールドを持っています:
fill_in 'Your name', with: 'John'
記入する前に値を確認したいのですが、わかりません。
次の行の後に追加するとfill_in
:
find_field('Your name').should have_content('John')
そのテストは失敗しますが、ページを保存して確認したように、直前の入力は機能しました。
私は何が欠けていますか?
別のきれいな解決策は次のとおりです。
page.should have_field('Your name', with: 'John')
また
expect(page).to have_field('Your name', with: 'John')
それぞれ。
リファレンスも参照してください。
注:無効な入力の場合は、オプションを追加する必要がありますdisabled: true
。
xpathクエリを使用input
して、特定の値を持つ要素(「John」など)があるかどうかを確認できます。
expect(page).to have_xpath("//input[@value='John']")
詳細については、 http://www.w3schools.com/xpath/xpath_syntax.aspを参照してください。
おそらくもっときれいな方法のために:
expect(find_field('Your name').value).to eq 'John'
編集:最近はおそらくhave_selectorを使用します
expect(page).to have_selector("input[value='John']")
ページオブジェクトパターンを使用している場合(そうする必要があります!)
class MyPage < SitePrism::Page
element :my_field, "input#my_id"
def has_secret_value?(value)
my_field.value == value
end
end
my_page = MyPage.new
expect(my_page).to have_secret_value "foo"
特にプレースホルダーをテストする場合は、次を使用します。
page.should have_field("some_field_name", placeholder: "Some Placeholder")
また:
expect(page).to have_field("some_field_name", placeholder: "Some Placeholder")
ユーザーが入力した値をテストする場合:
page.should have_field("some_field_name", with: "Some Entered Value")
少し違うことをする方法を考えていました。フィールドに何らかの価値があるかどうかをテストしたかったのです(カピバラのマッチャーが一致するまで再テストする機能を利用しながら)。これを行うために「フィルターブロック」を使用することが可能であることがわかります。
expect(page).to have_field("field_name") { |field|
field.value.present?
}
フィールドが「some_field」のIDを持つ非表示のフィールドである場合は、次を使用できます。
expect(find("input#somefield", :visible => false).value).to eq 'John'