159

私は問題なくカピバラで埋めることができる適切なラベルのあるフィールドを持っています:

fill_in 'Your name', with: 'John'

記入する前に値を確認したいのですが、わかりません。

次の行の後に追加するとfill_in

find_field('Your name').should have_content('John')

そのテストは失敗しますが、ページを保存して確認したように、直前の入力は機能しました。

私は何が欠けていますか?

4

5 に答える 5

340

別のきれいな解決策は次のとおりです。

page.should have_field('Your name', with: 'John')

また

expect(page).to have_field('Your name', with: 'John')

それぞれ。

リファレンスも参照してください。

:無効な入力の場合は、オプションを追加する必要がありますdisabled: true

于 2013-05-16T10:11:50.597 に答える
189

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"
于 2012-05-08T17:58:42.277 に答える
2

特にプレースホルダーをテストする場合は、次を使用します。

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")
于 2016-10-21T21:47:11.630 に答える
0

少し違うことをする方法を考えていました。フィールドに何らかの価値があるかどうかをテストしたかったのです(カピバラのマッチャーが一致するまで再テストする機能を利用しながら)。これを行うために「フィルターブロック」を使用することが可能であることがわかります。

expect(page).to have_field("field_name") { |field|
  field.value.present?
}
于 2017-03-15T09:49:24.053 に答える
0

フィールドが「some_field」のIDを持つ非表示のフィールドである場合は、次を使用できます。

expect(find("input#somefield", :visible => false).value).to eq 'John'
于 2020-09-27T20:54:14.523 に答える