【问题标题】:watir-webdriver iterating table for field comparison用于字段比较的 Watir-webdriver 迭代表
【发布时间】:2015-03-10 06:21:58
【问题描述】:

如何迭代此表的行并比较每个第一列的值, 即“钱包1”==“钱包2”?

而当字段值相同时,比较第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

【问题讨论】:

    标签: ruby watir-webdriver


    【解决方案1】:

    这可以通过首先对集合进行排序或其他方式来加快速度,或者可能将所有值提取到数组中并使用一些数组函数来查找匹配的行。我相信还有空间让这更优雅

    从第一行开始,比较它下面的每一行, 移动到下一行,重复

    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
    

    【讨论】:

    • 你查克。正是我需要的。
    【解决方案2】:
    $browser.table.trs(:class => /odd|even/).each do |tr|
      puts tr.td(:index => 0).text
    end
    

    【讨论】:

    • 感谢 p0deje,这是有道理的,但这只是解决方案的初始部分。主要目标是比较上述字段。
    猜你喜欢
    • 2022-07-20
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 2012-06-11
    • 2016-03-03
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    相关资源
    最近更新 更多