2011-01-25 54 views
1

我想設置的Watir此單選按鈕,但它沒有找到它:的Watir單選按鈕沒有找到

HTML:

<input type="RADIO" style="-moz-user-focus: normal;" tabindex="2421" handlenativeevents="false" value="3G" $9a="$9b" $89="isc_RadioItem_3" id="isc_1HV" name="network"> 

紅寶石:

if BROWSER.radio(:value => '3G').exists? 
    BROWSER.radio(:value => '3G').set 
end 

難道是因爲我們的代碼包含大寫RADIO? (由SmartGWT生成)

對此的任何解決方法?

+0

任何錯誤信息? – 2011-01-25 14:39:57

回答

0

另一種選擇。如果它沒有響應收音機,因爲它不是一個單選按鈕(Watir會理解它),那麼你需要找到另一種方法來點擊對象。你可以嘗試點擊它的容器來查看它是否有效,但如果沒有,那麼你需要使用硬件點擊。你可以找到一個硬件點擊解決方案作爲一個鴨嘴(這是我的答案之一:here)。您可以自定義此代碼以接受x和y修飾符(如果您喜歡),則可以使用.left_click來硬件單擊任何元素(包括容器)。所以left_click指向單選按鈕的x和y修飾符的RADIO容器。這比僅在硬件上單擊絕對x/y位置時動態更靈活,但它將使您的鼠標光標離開並用它來點擊屏幕。我希望這有幫助!

0

可能在一幀中。錯誤信息應指向正確的方向。

1

檢查DOM以查看它是否位於一個框架內或某個導致問題的容器內。如果你不能按值訪問單選按鈕,你可以通過其他的東西來引用它,比如索引。找到單選按鈕的容器,並在第N個索引處引用它。所以,如果你的按鈕在表中的第二個按鈕表1的12,你可以磨練下來是這樣的:

BROWSER.table(:index, 1).table(:index, 12).radio(:index, 2) 

或者,如果它的第二個單選按鈕的頁面(總是)上,然後......

BROWSER.radio(:index, 2) 

您還可以通過其他的東西引用一個單選按鈕:

BROWSER.radio(:value, '3G') 
BROWSER.radio(:name, 'network') 
BROWSER.radio(:id, 'isc_1HV') 

爲進一步幫助我需要知道,如果你可以在頁面上的同一容器中引用其他元素。有關如何引用元素的信息,請參見此處:HTML elements supported by Watir

而且,如果完全卡住,則需要xpath。坦率地說,這應該是最後的手段。