2013-01-01 13 views
8

capybaraを使用すると、要素のcssクラスをすべて取得する方法はありますか?ドキュメントを見ると、これを行う簡単な方法はありません。カピバラの要素のすべてのクラスを取得しますか?

また、element、elem、およびcssクラス(someclass)を指定すると、elem.has_css?('.someclass')はjquery $(elem).hasClass('someclass')に相当する必要がありますか?

この特定のテストでは、javascriptが含まれているため、Seleniumを使用しています。

答えて

12

Element#[]は私には非常に簡単になります要素、elemは与えられ、また

find('div')[:class] 

、およびCSSクラス、工ass、(」工ass。)elem.has_cssに相当すべきですか? jquery $(elem).hasClass( 'someclass')?

Element#has_css?メソッドが呼び出される要素内の指定されたCSSセレクタを持つ要素をチェックします。 JqueryのhasClassは、要素がclassを指定しているかどうかをチェックします。

更新:Capybara matchers現在の要素内の要素/テキストを検索します。 Element#has_css?は、要素内に指定されたcssセレクタを持つ要素が含まれているかどうかをチェックします。要素が存在するかどうかを確認する場合は、page.has_css?を使用します。たぶん、形式がexpect(page).to have_css('div')のマッチャーがあなたにとっては良いでしょう。

+1

これは、クラスを取得するために機能します。 elem [:class]が "otherclass someclass"を返す状況がありますが、elem.has_css?( '。someclass')はfalseを返します。これは理にかなっていますか? – mushroom

+1

@mushroom私は答えを –

+1

更新しました。READMEに「Element#has_cssは要素に指定されたcssセレクタを持つ要素が含まれているかどうかを確認します」という場所を指摘できますか?また、has_css?あなたが言うことと同じように振る舞いますが、私の質問にあるjqueryコードとルビコードの結果は必ず同じではないと思います。 – mushroom

関連する問題