2012-11-15 266 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是,已更新的答案。 –

相关问题