2016-06-26 2 views
2

ページの特定の部分にテキストの存在を検証する必要があります。Capybara expect page.selector to_have

expect(page).toは、あまりにも多くのテキストを出力しますが、これは常に契約条件を保持するページにとっては迷惑です。

私はIDによって参照されるページの一部を選択する方法を見つけ出すことはできませんexpect('#id').to(have_text(...)

のようなものにexpect(page).to(have_text(を変換したいと思います。 within('#id')の中に私のexpect(page)を書きますか?

EDIT:可能な場合は、ネストされたタグに対して

<div id="id"> 
    <span class="nested">...</span> 
    Text I want to check with have_text() 
</div>` 

答えて

1

を機能するソリューションは、あなたがここに複数の選択肢があり、どちらか

section = find(:css, '#id') #the :css may be optional depending on your Capybara.default_selector setting 
# or - section = find_by_id('id') 
expect(section).to have_text(...) 

または

expect(page).to have_css('#id', text: '...') 

または

expect(page).to have_selector(:id, 'id', text: '...') 

は、他の要素に要素が必要かどうかによって異なります。

+0

これらのソリューションは、テキストだけでなくネストされたタグも持つタグに対しても機能しますか? '

...Text I want to check
' –

+0

@ CyrilDuchon-Dorisはい、デフォルトでは、textオプションは要素内の可視テキストの部分文字列と一致します - 'expect(page).to haves_css( '#targetId'、text: '確認したいテキスト') ' –