2013-06-03 24 views
4

我有一個SitePrism頁面內定義下列元素:如何從Site Prism的下拉菜單中選擇一個項目?

element :type, "select[id='type']" 
elements :type_options, "select[id='type'] option" 

在我的黃瓜的步驟定義,我有以下代碼從基於要素價值的選擇框中選擇一個項目:

@app.new.type_options.each {|name| name.click if name.text.upcase == value.upcase} 

我不太喜歡這個實現,但它在鉻合金中運行Capybara時工作得很好,但是當我無頭運行時失敗,所以我認爲必須有一個備用/更好的方法來選擇下拉項目。

理想情況下,我希望能夠做些類似@app.new_r.r_type.select 'value'的工作,但我無法弄清楚如何在SitePrism中做到這一點。

所以,我的第一個問題是,任何人都可以推薦一個優雅的方式來從下拉菜單中選擇一個項目,基於SitePrism的值?

而我的第二個問題是,任何想法爲什麼上面的代碼失敗時運行無頭?

+1

當您嘗試'@app.new_r.r_type.select'value''時,您會得到什麼? –

+0

我得到一個無法找到選項「事件」(水豚:: ElementNotFound)錯誤。 – drooks

+0

更正 - 我曾嘗試過,但我試圖匹配'價值'和'價值',並得到一個無法找到選項「事件」(水豚:: ElementNotFound)錯誤。修好我的匹配器後,這現在工作。這也解決了我的第二個問題。感謝Nat! – drooks

回答

10

我有一個類似的問題,我無法得到它來選擇我想要的選項。我遇到了這個問題,它讓我意識到我的問題是,你必須發送文本,而不是價值,選擇()。

舉例來說,如果我有類似HTML的

<select id="things"> 
    <option value="thing1">The First Thing</option> 
    <option value="thing2">The Second Thing</option> 
    <option value="thing3">The Third Thing</option> 
</select> 

在我SitePrism ::第I類有:

element :things, "select[id='things']" 

我想我需要做的:

@my_page.things.select("thing1") 

這不起作用。相反,你需要做的:

@my_page.things.select("The First Thing") 

我知道這是不是試圖根據你從SitePrism得到,就像最初被問得值來選擇略有不同。但是我認爲這個關於select()傳遞的區別可能有助於某人。

相關問題