2012-02-23 4 views
1

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

И когда поле имеет такое же значение, сравните значение четвертого столбца?

<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

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

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

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 
+0

Dank u Chuck. То, что мне нужно. –

1
$browser.table.trs(:class => /odd|even/).each do |tr| 
    puts tr.td(:index => 0).text 
end 
+0

Благодаря p0deje, что имеет смысл, но это только начальная часть решения. Основная цель - сравнить указанные поля. –

Смежные вопросы