2016-10-28 32 views
1

私のfindをhas_selectorを使用して変換したいと考えています。私はhave_selectorを使用するために、これを変換したいと私が試したhave_selectorを使用している複数のセレクタ

expect(find('div[some-attr=true]'))['some-data-attr']).to eq('Hello World') 

:現在、私はこの作業を持って

expect(page).to have_selector('div[some-attr=true][some-data-attr]') 

私はここで間違って何をしているのですか?

+0

あなたはCSSセレクターで試してみましたか? http://stackoverflow.com/a/34204391/1033737あなたの場合、それは 'expect(page).to have_selector(YOUR_DIV_SELECTOR)' – fabersky

答えて

1

これは、「いくつかのデータ-attrは」実際には、ページの読み込み以降に変更されたプロパティではない場合にのみ動作します

expect(page).to have_css('div[some-attr=true][some-data-attr="Hello World"]') 

でなければなりません。セレクタは属性値と一致しますが、元のメソッドは返された要素の#[]を呼び出すため、変更された値を持つプロパティにアクセスしている可能性があります。これらの属性名が実際にどのようなものであり、どのように使用されているかを知らなければ、確かに言うことは不可能です。 Capybara.default_selector ==場合はCSSセレクタ

:それは実際には財産であり、あなたはそれをあなたのアプリで大量に使用する必要がある場合は、上のカスタムフィルタを書くことができ、CSS、その後have_selectorhave_cssは同じことを意味しますが、あなたがCSSセレクターを使用している場合は、ちょうど使用してより良いですhave_css

+0

となるでしょう。 –

関連する問題