2011-11-16 88 views
16

我与Ruby on Rails的工作中发现3,黄瓜和水豚水豚,一个css元素

我一直在寻找了一段时间,我无法弄清楚如何找到一个特定的一个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标签。

在此先感谢!

回答

31

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

相反,尝试have_css:text选项。

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

这工作,会有吃出发现元素的索引的好办法?因此,如果我想比较表格中两个元素的顺序,我认为最好的方法是找到每个元素的索引并进行比较。 – ardavis

+1

''page.should have_selector()''也适用 – s2t2

12

要找到一个特定的元素:

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

have_text不再支持。使用page.find(“#table”)。应该有have_content('stuff')。 – y0mbo

0

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

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

3

我想所有的答案应该工作,但现在水豚不使用应了它使用期望

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