1

Watir のテスト スイートの一部として、データのテーブルを検証しています。要件の 1 つは、特定の列を空にする必要があることです (特定のラジオ ボタンが選択されていない限り)。したがって、スクリプトには次のコードがあります。

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"],
]]

私がする必要があるのは、各サブ配列の各「比較」列をチェックし、それが空であることを確認することです。私は次のようなことができます

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

つまり、私の Java 脳がその方法を教えてくれているということです。これを行うためのより簡単な1行のルビーの方法が必要だと思います

4

1 に答える 1

6

One-liner:

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

To skip header information:

result = incidents[1..-1].all? { |row| row[3].empty? }
于 2012-11-15T12:14:27.223 に答える