2011-11-16 20 views
16

CSS要素内に見つけること3、キュウリ、およびカピバラカピバラ、私はRuby on Railsにして働いている

私はかなりの時間のために検索してきた、と私は特定のを見つける方法を見つけ出すことはできませんCSSタグ内のpage要素。私の場合、「Welcome [Name]」ではなく、テーブルの中に名前があることを確認する必要があります。

私のような何か試してみました:

within('table') do 
    page.body.index("[Name]") 
end 

を私はid='table'を持つテーブルがあります。

しかし、私は、次のような、任意のCSSの要素のためにこれを行う方法を知りたい:私は私の問題は、page.bodyに関係していると思うが、私はどのようにわからない

within('h2') do 
    page.body.should have_content ('stuff') 
end 

それを特定のCSSタグに含める。

ありがとうございます!

答えて

31

カピバラのwithinマッチャーは最初の結果と一致するので、h2タグが複数ある場合は、最初のものだけが表示されます。

代わりにに:textオプションを付けてみてください。

page.should have_css("#table", :text => "[Name]") 
page.should have_css('h2', :text => 'stuff') 
+0

を期待して使用するもう必要があります私はすべての答えは動作するはずと思いますが、今カピバラは使用しませんか?ですから、テーブル内の2つの要素の順序を比較したい場合は、それぞれのインデックスを見つけて比較するのが最善の方法だと思います。 – ardavis

+1

'' page.should have_selector() ''も動作します – s2t2

12

特定の要素を見つけるために:クラスの特定のセットを含むすべての要素があるかどうかを確認するには page.all(:css, 'button.btn-primary.days.active').size.should == 1

page.find('#table').should have_text('stuff') 
+5

have_textはサポートされなくなりました。 page.find( "#table")。have_content( 'stuff')を使用してください。 – y0mbo

0

を私はこのようなものをやりました。
私は要素の特定のテキスト値を探す必要はありませんでした。 私は、要素の存在を保証したいだけで、その要素の数がいくつかあったことを保証したかっただけです。

3

それが見つかった要素のインデックスを取得する良い方法があるだろう、これは動作します

expect(page).to have_css("#table", :text => "[Name]") 
expect(page).to have_css('h2', :text => 'stuff') 
関連する問題