2012-01-31 78 views
1

我想從Excel電子表格用於數據驅動的測試選擇的單選按鈕。選擇單選按鈕紅寶石

我曾嘗試以下:

radio=worksheet.cells(rows,"A").value 
browser.radio(:name => 'name').set radio 

我也試過選擇作爲一個字符串,但得到的錯誤:

radio=worksheet.cells(rows,"A").value 
string_from_excel = "set" 
browser.send string_from_excel, radio 

單選按鈕的代碼是:

<input id="radio" type="radio" onclick="setradio(0)" value="0" name="radio"> 

感謝您的幫助

+0

看來你需要調用onclick事件,所以我認爲你需要一個'.click'的地方。 (注意:我還沒有處理Excel和Watir等YMMV)。這是電子表格的HTML表示嗎? – 2012-01-31 16:31:37

+0

No Im實際上從.xlsx文件獲取數據 – mike 2012-01-31 19:05:07

+0

您獲取了哪些數據?從電子表格? – 2012-02-01 00:24:31

回答

1

首先讓我們試着讓你的代碼有點更容易閱讀。注意評論和其他答案中的所有問題?目前還不清楚你在從電子表格中檢索什麼,並且變量的命名規定數據「無線電」只是在一段代碼(和相關的html)中提供了該術語的另一個實例,該代碼段已經被這個單詞所佔據。取名類似radio_idradio_valueradio_name要清楚向任何人應該充分利用電子表格檢索,以及究竟該變量包含的內容。從現在起4個月,它對你自己也會更有意義。

其次,仔細評估如何正確識別你所需要的物品。您的示例HTML僅顯示一個無線電控制,但通常這些控制集合在一起,並且大多數情況下,NAME用於識別通用集合中的無線電控制,see the examples on this page。因此,使用name屬性通常是識別單選按鈕的一種可怕方式。價值,或嵌入文本通常是一個更好的方式來獲得「正確的」無線電控制。

第三,watir單選按鈕對象的.set方法不接受參數,它只是確保指定的特定無線電控制處於'set'狀態。對.set的補充是.clear(有關更多信息,請參見Watir RDOC

此外,您的控件在HTML中定義了一個事件處理函數。當控件收到一個onclick事件時,它正在執行一個腳本。因此,在設置它(或者可能而不是設置它)之後,爲了使頁面正常工作,您可能需要觸發onclick事件,以便調用正確的客戶端代碼。

考慮到這一點我想嘗試的代碼看起來是這樣的

radio_value = worksheet.cells(rows,"A").value 
browser.radio(:value => radio_value).set 
browser.radio(:value => radio_value).fire_event('onclick') 

肥皂盒:
另一個電臺的原因進來套是,你不能「未設置」單選按鈕用鼠標除了在同一組中選擇另一個按鈕。您幾乎從不會在網頁上看到單獨的單選按鈕。如果需要可以選擇或取消選擇的單個事物,通常使用「複選框」元素。如果開發人員是使用一個單一的收音機作爲一個「複選框」通過執行JavaScript代碼,使其像一個複選框,他們需要(恕我直言)是 取出,並拍攝 解僱,取而代之的是誰知道如何使用CSS開發對於這樣的事情,而不是濫用窮人的無線電控制,並創建一個頁面,如果有人禁用JavaScript,將無法正常工作。

+0

那很好用.....謝謝 – mike 2012-02-01 14:58:12

0

首先,名字從「名」到「廣播」的變化,那麼就使用設置

browser.radio(:name => 'radio').set 
+0

即時獲取以下錯誤:'assert_exists':無法找到元素,使用{:name =>「radio」}(Watir :: Exception :: UnknownObjectException) – mike 2012-01-31 19:17:50

+1

我將你的html複製到一個文件中並用瀏覽器打開文件,然後我成功點擊了單選按鈕。你嘗試過嗎?也許你沒有提供足夠的信息讓我看到這個問題。你應該提供完整的html(或者至少足以說明你能夠重現這個問題。 – 2012-01-31 23:11:37