Capybara,在css元素中找到

我正在使用Ruby on Rails 3,Cucumber和Capybara

我已经搜索了相当长的一段时间,我无法弄清楚如何在css标签中找到特定的页面元素。 在我的例子中,我需要确保在表格中找到名称,而不是在“欢迎[名称]”中。

我试过类似的东西:

within('table') do page.body.index("[Name]") end 

我有一个id='table'

但我想知道如何为任何css元素执行此操作,例如:

 within('h2') do page.body.should have_content ('stuff') end 

我认为我的问题与page.body有关,但我不确定如何将其包含在特定的css标签中。

提前致谢!

匹配器within Capybara只匹配第一个结果,所以如果你有多个h2标签,它只会查看第一个结果。

相反,尝试使用:text选项的have_css

 page.should have_css("#table", :text => "[Name]") page.should have_css('h2', :text => 'stuff') 

要查找特定元素:

 page.find('#table').should have_text('stuff') 

我猜所有答案都应该有效,但现在Capybara不再使用它应该使用expect

 expect(page).to have_css("#table", :text => "[Name]") expect(page).to have_css('h2', :text => 'stuff') 

我做过这样的事情: page.all(:css, 'button.btn-primary.days.active').size.should == 1

检查是否存在包含特定类集的任何元素。
我不需要查找元素的特定文本值。 我只是想确保元素的存在,以及它们中有多少元素。