Ruby:从二维数组中的每个子数组中获取第 n 个元素

标签 ruby unit-testing watir watir-webdriver

作为 Watir 测试套件的一部分,我们正在验证数据表。 其中一项要求是特定列必须为空(除非选择了特定的单选按钮) 所以在我的脚本中,我有以下代码

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

其中 browser 是一个 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"],
]]

我需要做的是检查每个子数组中的每个“Compared”列并确保它是空的。 我可以做类似的事情

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

这是我的 Java 大脑告诉我如何去做的。我想这一定是一种更简单的单行 ruby​​ 方式来做到这一点

最佳答案

一行:

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

跳过标题信息:

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

关于Ruby:从二维数组中的每个子数组中获取第 n 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13397127/

相关文章:

javascript - 你如何测试有延迟的 Angular promise ?

c# - 您能否对接口(interface)进行 Moq 模拟,并通过实现该接口(interface)的类型的强制转换和空检查?

mysql - ruby find_by_sql 字符串参数将 int 参数转换为字符串在限制 mysql 8 中抛出错误

ruby-on-rails - 如何在 Rails 中获取 "each"循环的计数器?

ruby - 如何从数组中搜索以单词开头的行?

unit-testing - 如何在使用 Moq 的测试中引发事件?

ruby - Watir-webdriver:如何强制点击方法等待页面完全加载

PHP shell_exec 不允许 "Watir::Browser.new :firefox"执行

selenium - Ruby/Heroku Selenium::WebDriver::Error::WebDriverError: 无法连接到 chromedriver 127.0.0.1:9516

ruby - 为什么mac下Ruby下有很多 "fsevent_watch"的实例?