2017-01-16 100 views
1

我想對於傳遞的參數來選擇單選按鈕,同時調用該函數無法解決Ruby的哈希

下面是text.html網頁的HTML代碼:

<td> 
    <input name="names" value="a" type="radio">Text1 
    <input name="names" value="b" type="radio">Text2 
</td> 

下面是Ruby腳本:

require 'watir' 

browser = Watir::Browser.new(:chrome) 

browser.window.maximize 

browser.goto('file:///C:/text.html') 

def select_names(browser, name) 
    select_name_hash = { 
     'a' => 'First', 
     'b' => 'Second' 
    } 

    if browser.radio(:name => 'names', :value => "#{select_name_hash[name]}").present? 
     browser.radio(:name => 'names', :value => "#{select_name_hash[name]}").set 
     message = "Select #{name} - SUCCESS" 
    else 
     message = "Select #{name} - FAILURE" 
    end 

    return message 
end 

p select_names(browser, 'First') 

我得到的輸出:

"Select First - FAILURE" 

任何人都可以請幫忙。我希望輸出成功。在此先感謝

回答

0

看起來你需要通過它的值獲取散列鍵。

Ruby 1.9的和更大:

select_name_hash.key(name) 

紅寶石1.8:你可以按如下做

select_name_hash.index(name) 
+0

我想哈希是正如我所說,我不想使用反轉的方式相同。有沒有什麼方法可以循環找到正確的輸出? –

+0

@AshwinRaoT我已經更新了我的答案。您可以通過其值 –

0

如果你的變量name等於First那麼你應該初始化select_name_hash如:

select_name_hash = { 
    'First' => 'a', 
    'Second' => 'b' 
} 

UPD

爲了您select_name_hash

> select_name_hash.rassoc('First').first 
=> "a" 

> select_name_hash.key('First') 
=> "a 
+0

獲取散列鍵我想散列與我提到的相同,我不想使用反轉。有沒有什麼方法可以循環找到正確的輸出? –

+0

@AshwinRaoT我認爲在UPD可能的解決方案之一 –