итерационная таблица watir-webdriver для сравнения полей - PullRequest
1 голос
/ 23 февраля 2012

Как я могу перебрать строки этой таблицы и сравнить значение каждого первого столбца, то есть 'Wallet1' == 'Wallet2'?

А если поле имеет то же значение, сравнить значение 4-го столбца?

<table class="simple">
    <tbody><tr>
        <th class="labelCenter">Saldo</th>

        (...)

    </tr>
        <tr class="odd">
            <td class="labelCenter">Wallet 1</td>
            <td class="labelCenter">Decresing</td>
            <td class="labelCenter">16/02/2012 19:06:01</td>
            <td class="labelCenter">19/02/2012 14:03:01</td>
                <td class="labelCenter">
                </td>       
            <td class="labelRight">
                    78,90
            </td>
                <td class="labelRight">
                    0,00
                </td>
            <td class="labelCenter">Value</td>
        </tr>
        <tr class="even">
            <td class="labelCenter">Wallet 2</td>
        <td class="labelCenter">Increasing</td>
        <td class="labelCenter">16/02/2012 19:06:01</td>
        <td class="labelCenter">19/02/2012 11:09:01</td>    
                <td class="labelCenter">
                </td>
        <td class="labelRight">
                    0,00
        </td>
            <td class="labelRight">
                0,00
            </td>
        <td class="labelCenter">Value</td>
    </tr>
</tbody></table>    

В моем первом подходе использовались варианты,

$browser.table(:class, 'simple').rows[1..-1].each do |row|

, но я столкнулся с препятствием.

Кроме того, почему это не работает?

$browser.tr(:class => /odd|even/) do |row|
  puts row(:index => 0).text

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Возможно, это можно сделать быстрее, сначала отсортировав коллекцию или что-то в этом роде, или, возможно, выделив все значения в массивы и используя некоторые функции массива для поиска подходящих строк. Я уверен, что есть место, чтобы сделать это более элегантным

начать с первого ряда, сравнить с каждым рядом под ним, перейти к следующему ряду, повторить

rows = $browser.table(:class, 'simple').rows
last = rows.length -1
last.times do |current|
  remaining = last - current
  remaining.times do |j|
    if rows[current].cell.text == rows[j+1].cell.text
      if rows[current].cell(:index => 3).text == rows[j+1].cell(:index => 3).text
        #do something
      end
    end
  end
end
1 голос
/ 23 февраля 2012
$browser.table.trs(:class => /odd|even/).each do |tr|
  puts tr.td(:index => 0).text
end
...