16

以下は期待どおりに機能します。

 within('h2', text: 'foo') do
      should have_content 'bar'
 end

親要素内をチェックしようとしています。find(:xpath, '..')

要素を見つけたら、どのように適用し、その.find(:xpath, '..')要素内に何かをチェックしますか?

4

3 に答える 3

22

内部で 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')
于 2012-12-14T19:53:50.103 に答える
4

以下は 1 つのアプローチです。

 within('h2', text: 'foo') do
   within(:xpath, '..') do
     should have_content 'bar'
   end       
 end
于 2012-12-15T01:28:20.280 に答える