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 的答案中的代码可以写成一行:

expect(find("//h2[text()='foo']/..")).to have_text('bar')

或者

expect(page).to have_xpath("//h2[.='foo']/..", text: 'bar')
于 2012-12-14T19:53:50.103 回答
5

使用 2.11 之后的 Rspec 新语法,应该是;

within('h2', text: 'foo') do |h|
   expect(h).to have_content 'bar'
end     
于 2017-09-05T12:11:20.870 回答
4

以下是一种方法:

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