2012-06-12 60 views
4

我想用我的應用程序中的黃瓜來檢查Ruby on Rails視圖的內容。該視圖在表格中顯示信息。我希望能夠僅檢查該表的一列的內容。當我使用網頁步驟定義"I should see"時,它會檢查整個頁面。有沒有簡單的方法來做到這一點?黃瓜:如何檢查列中的特定文本?

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

回答

6

水豚的內置作用域可以是比那些xpaths更容易維護

within "#id_for_your_tr" 
    within('td', :class=> 'class_for_your_column') 
    page.should have_content "foo" 
    end 
end 
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 

我複雜的給你定義approac

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 

檢查表結構被genereated可以使用 檢查的行數是X page.should have_selector(「表TR」,:計數=> X)

+2

-1。黃瓜[內置方法](http://cukes.info/cucumber/api/ruby/1.1.6/Cucumber/Ast/Table.html)用於訪問[數據表](https://github.com/cucumber /黃瓜/維基/多行步-參數)。不要自己改造它。 –