26

現在の日付を含む非表示フィールドを持つフォームがあります。

カピバラファインダーを次のように書く方法を見つけようとしています:

  1. フィールドがあることを確認する
  2. フィールドの値を確認する

これはカピバラで可能ですか?

4

4 に答える 4

50

これを行うだけです:

find("#id_of_hidden_input", :visible => false).value
于 2013-10-04T09:27:09.513 に答える
5

spec_helper.rbまたは同等の隠し要素をグローバルに無視しないようにカピバラに指示することもできます。デフォルトの動作はオーバーライドできます。

# default behavior for hidden elements
# Capybara.ignore_hidden_elements = false

# find all elements (hidden or visible)
page.all(".articles .article[id='foo']")

# find visible elements only (overwrite the standard behavior just for this query)
page.all(".articles .article[id='foo']", :visible => true)


# changing the default behavior (e.g. in your features/support/env.rb file)
Capybara.ignore_hidden_elements = true

# now the query just finds visible nodes by default
page.all(".articles .article[id='foo']")

# but you can change the default behaviour by passing the :visible option again
page.all(".articles .article[id='foo']", :visible => false)

この記事からの例。

于 2014-02-21T17:55:27.307 に答える
4

マッチャーhas_field?は非表示フィールドでも機能します。findこのコンテキストで、またはこのコンテキストで奇妙な体操を行う必要はありませんall

page.has_field? "label of the field", type: :hidden, with: "field value"
page.has_field? "id_of_the_field", type: :hidden, with: "field value"

:typeここで重要なのは、オプションを:hidden明示的に設定することです。

非表示フィールドでラベルを使用する理由 これは、元のテキスト フィールドをクロークして非表示にする flatpickr などの js ライブラリを使用している場合に便利です。動作テストを特定のマークアップに結合しないことは、常に良いことです。

于 2020-04-22T11:54:41.337 に答える
2

find_by_css次のように xpath を使用するか、使用することで簡単に実行できます

page.find_by_css('#foo .bar a') #foo is the id the foo has .bar class
page.find('/table/tbody/tr[3]') #path of the element we want to find
于 2013-01-02T06:37:03.437 に答える