5

私はとで次の仕様を使用していMiniTest::SpecますCapybara

find_field('Email').must_have_css('[autofocus]')

'Email'というフィールドにautofocus属性があるかどうかを確認します。ドキュメントには次のように書かれています。

has_css?(path、options = {})

特定のCSSセレクターがページまたは現在のノードにあるかどうかを確認します。

私の知る限り、フィールド「Eメール」はノードなので、呼び出しmust_have_cssは間違いなく機能するはずです。私が間違っているのは何ですか?

4

3 に答える 3

8

Jonas Nicklasによる回答を得ました:

いいえ、機能しないはずです。has_css?要素の子孫のいずれかが 指定されたCSSと一致するかどうかを確認します。要素自体はチェックしません。autofocusプロパティは電子メールフィールド自体にある可能性が高いので、has_css?この場合、常にfalseを返します。

あなたは試すかもしれません:

find_field('Email')[:autofocus].should be_present

これはXPathでも実行できますが、頭のてっぺんから構文を思い出せません。


私の解決策:

find_field('Email')[:autofocus].must_equal('autofocus')
于 2011-11-28T11:53:22.240 に答える
1

私の頭の上から。使用できますかhas_selector?()。Rspec wit Capyの使用:

page.should have_selector('email', autofocus: true)

また、Capybaraマッチャーを確認してくださいhttp://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers

于 2011-11-26T23:39:41.327 に答える
0

以前にMiniTestを使用したことはありませんが、属性をチェックするための構文は正しいようです。

私の懸念は、find_fieldの使用にあります。ドキュメントによると:

ページでフォームフィールドを見つけます。このフィールドは、名前、ID、またはラベルテキストで見つけることができます。

ラベルに基づいてフィールドを見つけようとしているようです。もしそうなら、私はあなたがそれにfor属性を持っていること、そしてそれがあなたが探しているフォームフィールドの正しいIDを持っていることを確認します。これが問題であることを除外するには、フォームフィールドのIDを一時的に叩き、それを明示的に探すことができます。

于 2011-11-28T11:08:57.870 に答える