我正在尝试使用 cucumber 在我的应用程序中检查 Ruby on Rails 视图的内容。该视图在表格中显示信息。我希望能够仅检查该表的一列的内容。当我使用 web 步骤定义"I should see"
时,它会检查整个页面。有什么简单的方法可以做到这一点吗?
例如:column.should have_content("text")
我正在尝试使用 cucumber 在我的应用程序中检查 Ruby on Rails 视图的内容。该视图在表格中显示信息。我希望能够仅检查该表的一列的内容。当我使用 web 步骤定义"I should see"
时,它会检查整个页面。有什么简单的方法可以做到这一点吗?
例如:column.should have_content("text")
Capybara 的内置作用域可能比那些 xpath 更容易维护
within "#id_for_your_tr"
within('td', :class=> 'class_for_your_column')
page.should have_content "foo"
end
end
使用水豚+黄瓜,说你的步骤是
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)