我正在尝试使用黄瓜来检查我的应用中的Ruby on Rails视图的内容。视图在表格中显示信息。我希望能够只检查该表的一列的内容。当我使用Web步骤定义"I should see"
时,它会检查整个页面。有没有简单的方法来做到这一点?
例如:column.should have_content("text")
答案 0 :(得分:6)
Capybara的内置范围可能比那些xpath更容易维护
within "#id_for_your_tr"
within('td', :class=> 'class_for_your_column')
page.should have_content "foo"
end
end
答案 1 :(得分:1)
使用水豚+黄瓜, 说你的步骤是
Then I should see the following (#MYTABLE)
| FOO | 94040 | "friendly" |
| BAR | 94050 | "competition"|
步骤定义
Then /^I should see the following games:$/ do |expected_table|
table_results = page.find('#DOM_ID')
end
我对你的定义很复杂
When /^(.*) in the "([^\"]*)" column of the "([^\"]*)" row$/ do |
action, column_title, row_title|
col_number = 0
all(:xpath, "//*[(th|td)/descendant-or-self::*[contains(text(),
'#{column_title}')]]/th").each do |element|
col_number += 1
break if element.has_content?(column_title)
end
within :xpath, "//*[(th|td)/descendant-or-self::*[contains(text(),
'#{row_title}')]]/td[#{col_number}]" do
When action
end
end
检查正在生成的表结构可以使用 检查行数是否为X. page.should have_selector('table tr',:count => X)