Capybara,在css元素中找到

时间:2011-11-16 20:38:27

标签: ruby-on-rails testing cucumber capybara

我正在使用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标记中。

提前致谢!

4 个答案:

答案 0 :(得分:32)

Capybara的within匹配器仅匹配第一个结果,因此如果您有多个h2标签,则只会查看第一个结果。

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

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

答案 1 :(得分:12)

要查找特定元素:

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

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

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