2013-01-10 106 views
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 

但它不能被用作所需的值可能不總是在第一行。

循環遍歷所有行是一種選擇,但效率不高。

回答

2

我會做:

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

基本上,這是說發現在第二列「brett58」表的第一行。然後設置該行中的第一個複選框。

+0

非常感謝這兩個 - 代碼以及解釋! :) – Waltz

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

感謝您的回答! :) – Waltz

相關問題