2012-11-15 265 views
1

作爲Watir測試套件的一部分,我們正在驗證數據表。 的要求之一是,一個特定的列必須是空的(除非選擇特定單選按鈕) 所以在我的劇本,我有以下的代碼Ruby:在2d陣列中獲取每個子陣列的第n個元素

incidents = browser.table(:xpath, Xpath_CC).strings 

,其中瀏覽器是的Watir-webdriver的瀏覽器對象 給我的在事故

[["DateTime", "Problem", "Value", "Compared", "Number", "Causes", "Where", "Count", "Type"], 
["May 07, 02:15 - 02:30", "Web", "38.46 %", "", "1", "UNKNOWN", "", "1", "J105"], 
["May 07, 02:15 - 02:30", "Video", "40 %", "", "1", "UNKNOWN", "", "1", "J105"], 
["May 07, 02:00 - 02:15", "Email", "30 %", "", "1", "UNKNOWN", "", "1", "J105"], 
["May 07, 01:00 - 01:15", "Email", "70 %", "", "1", "UNKNOWN", "", "1", "J105"], 
["May 07, 01:00 - 01:15", "Email", "70 %", "", "1", "UNKNOWN", "", "1", "J105"], 
["May 07, 01:00 - 01:15", "Email", "0 %", "", "1", "UNKNOWN", "", "1", "J105"], 
]] 

我需要做的是檢查每個子陣列中的每個「相比」一欄,並確保它是空的這個二維數組。 我可以做類似

result = true 
incidents.each do |row| 
    if (row[3] != '') 
    result = false 
    end 
end 

把那是我的Java的大腦告訴我該怎麼做。我想t'here必須做的一個簡單的一行紅寶石路這

+0

哎呀想通了,像 incision [3] [1 ..- 1] .inspect會給我我想要的 – Dace

回答

6

一行代碼:

result = incidents.all? { |row| row[3].empty? } 

要跳過頭信息:

result = incidents[1..-1].all? { |row| row[3].empty? } 
+0

該解決方案的唯一問題是,它不包括標題信息 – Dace

+0

如果我這樣做,我會得到正確答案 incidents = in cidents [1 ..- 1] assert(incidents.all?{| row |行[3] .empty? },「一些錯誤消息」) – Dace

+0

@Dace是,已更新的答案。 –

相關問題