0

我正在使用 Ruby 和 Watir 自动执行一项任务。

我想根据第二列中的值是否与我的输入值匹配来设置一个复选框(位于表的第一列中)。例如,在以下代码片段中,值“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

但它不能被使用,因为所需的值可能并不总是在第一行。

循环遍历所有行是一种选择,但效率低下。

4

2 回答 2

2

我会做:

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

基本上,这就是说在第二列中找到具有“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 回答