2016-11-04 86 views
1

我有一個網頁遊戲,在使用javascript和jquery的輸入字段中顯示值。我期待測試的值在頁面上可見。但是,如果我檢查元素,該值不會出現在HTML中。水豚在頁面上找不到價值

下面是一些JS代碼,並將其值:

function updateTotal(){ 
     $('#edit-game-result').val(game.totalScore); 
     } 

這裏是HTML的輸入字段:

<input type="text" id="edit-game-result" size="10" maxlength="3" class="form-text" readonly/> 

我已經試過水豚測試,如:

預期(find_field ('edit-game-result')。value).to eq 10

該測試找到該字段,但給出outp UT: 預期:10有:無

我認爲這是某種由於這樣的: Is the HTML is View Source different from the HTML in Inspect Element? ,但我不能找到一種方法,使水豚讀值。

這可能也與此有關: http://ahmednadar.github.io/12/09/2013/overwrite-how-Capybara-ignores-hidden-elements/

我相信場確實在測試運行時具有值10。但是,我無法在水豚測試中使用該值。

你能幫我找到一個水豚測試,可以解釋爲什麼這不起作用嗎?

回答

0

您遇到的問題是您正在查找元素,然後檢查其中的值,而不會等待該值匹配。相反,你應該使用的匹配水豚提供

expect(page).to have_field('edit-game-result', with: '10') 

將使用水豚等待/重試行爲要等到值被改變。

+0

感謝您的回覆。我試過,但得到了: '失敗/錯誤:expect(page).to have_field('edit-game-result',':''012') 預計會發現字段「編輯遊戲結果」值爲「10 「但沒有匹配。還發現「」,它與匹配選擇符但不是所有濾鏡相匹配。「 – jeebee

+0

@jeebee然後,當您檢查它時,字段在Capybara.default_max_wait_time秒內的值不會爲'10',或者它在頁面上不可見。您可以通過將'visible:false'選項傳遞給'have_field'來檢查一個不可見的元素,但是您確實不應該依賴於檢查測試中的不可見元素。除此之外,顯示你的測試的其餘部分,所以我們可以看到你在做什麼 –

+0

嗨托馬斯 我的代碼是在這裏: https://github.com/glynester/bowling-challenge/blob/last_frame/spec/ features/game_play_spec.rb 我嘗試了許多組合,包括添加「visible:false」,但它沒有奏效。我甚至在spec_helper.rb中爲水豚添加了10秒的等待時間。 感謝您的期待。 – jeebee