我正在使用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
但它无法使用,因为所需的值可能并不总是在第一行。
循环遍历所有行是一种选择,但效率很低。
答案 0 :(得分:2)
我愿意:
browser.table(:class, "cuesTableBg").rows.find{ |row|
row.cells[1].text == 'brett58'
}.checkbox.set
基本上,这就是说找到第二列中有“brett58”的表的第一行。然后设置该行中的第一个复选框。
答案 1 :(得分: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