web-dev-qa-db-ja.com

隠しフィールドのCapybaraテスト値

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

私はカピバラファインダーを書く方法を理解しようとしています:

  1. フィールドがそこにあることを確認します
  2. フィールドの値を確認してください

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

23
Misha M

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
2
Muhamamd Awais

これを行うだけです:

find("#id_of_hidden_input", :visible => false).value
45

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

# 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)

この記事 からの例。

5
Darme