0

Ruby と Watir を使用してタスクを自動化しています。

2 列目の値が入力値と一致するかどうかに基づいて、チェックボックス (テーブルの 1 列目) を設定したいと考えています。たとえば、次のコード スニペットでは、値「brett58」が入力値と一致するため、それに関連付けられたチェックボックスを設定します。

<tr class="cuesTableRowOdd">
    <td align="center">
        <input class="content-nogroove" type="checkbox" name="result[1].chked" value="true">
        <input type="hidden" value="7bd67e4d-a59f-0143-3886-22c1d205a5c1" name="result[1].col[0].stringVal">
        <input type="hidden" value="brett58" name="result[1].col[1].stringVal">
    </td>
    <td align="left">
        <a class="cuesTextLink" href="userEdit.do?key=7bd67e4d-a59f-0143-3886-22c1d205a5c1">brett58</a>
    </td>
    <td align="left">brett</td>
    <td align="left">lee</td>
    <td align="left"></td>
</tr>

しかし、私はそれを行うことができません。上記の場合、次の行が目的を果たします (入力値が最初の行と一致するため)。

browser.table(:class, "cuesTableBg").checkbox(:name, "result[1].chked").click

ただし、必要な値が常に最初の行にあるとは限らないため、使用できません。

すべての行をループすることも 1 つのオプションですが、非効率的です。

4

2 に答える 2

2

私はするだろう:

browser.table(:class, "cuesTableBg").rows.find{ |row| 
  row.cells[1].text == 'brett58'
}.checkbox.set

基本的に、これは、2 列目に「brett58」があるテーブルの最初の行を見つけることを意味します。次に、その行の最初のチェックボックスを設定します。

于 2013-01-10T17:08:51.117 に答える
0

次のようなことを試してください:

def set_checkbox(row_text_to_match)
  @browser.table(:class, "cuesTableBg").row(:text, /#{Regexp.escape(row_text_to_match)}/).checkbox(:name, "result[1].chked").set
end
于 2013-01-10T16:57:50.360 に答える