黄瓜:如何检查列中的特定文本?

时间:2012-06-12 15:35:46

标签: ruby-on-rails ruby cucumber

我正在尝试使用黄瓜来检查我的应用中的Ruby on Rails视图的内容。视图在表格中显示信息。我希望能够只检查该表的一列的内容。当我使用Web步骤定义"I should see"时,它会检查整个页面。有没有简单的方法来做到这一点?

例如:column.should have_content("text")

2 个答案:

答案 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)