以下は期待どおりに機能します。
within('h2', text: 'foo') do
should have_content 'bar'
end
親要素内をチェックしようとしています。find(:xpath, '..')
要素を見つけたら、どのように適用し、その.find(:xpath, '..')
要素内に何かをチェックしますか?
以下は期待どおりに機能します。
within('h2', text: 'foo') do
should have_content 'bar'
end
親要素内をチェックしようとしています。find(:xpath, '..')
要素を見つけたら、どのように適用し、その.find(:xpath, '..')
要素内に何かをチェックしますか?
内部で XPath ロケータを使用する場合は、within
最初から開始する必要があります.
(最初から開始しない場合は、ドキュメント内ではなくドキュメント全体.
で検索が行われます)。.myclass
例えば:
within('.myclass') do
find(:xpath, './div')
end
また:
find('.myclass').find(:xpath, './div')
@BSeven の回答のコードは、1 行で記述できます。
expect(find("//h2[text()='foo']/..")).to have_text('bar')
また
expect(page).to have_xpath("//h2[.='foo']/..", text: 'bar')
以下は 1 つのアプローチです。
within('h2', text: 'foo') do
within(:xpath, '..') do
should have_content 'bar'
end
end