我正在使用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标记中。
提前致谢!
答案 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
检查是否有任何元素包含一组特定的类 我不需要查找元素的特定文本值。 我只是想确保元素的存在,以及它们中有多少元素。