2016-02-12 92 views
0

我讀過類似的問題,但他們不能解決我的問題。我是js測試新手,所以我認爲我可能做錯了什麼。水豚:: ElementNotFound:無法找到字段「密鑰名稱」

形式產生這個HTML

<form class="new_category_item_key" id="new_category_item_key" action="/guides/dungeon-boss/categories?category_id=heroes" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="authenticity_token" value="b7wiF07zYh/Nl727M3y0Uk1TbroMJFuGqTK6fYNlNted/5G4Wmz4BZLb7IazzyP5md/wWRb1D28ePhrzt2uMSA==" /> 


    <label for="category_item_key_name">Key name</label> 
    <input type="text" name="category_item_key[name]" id="category_item_key_name" /> 

<select name="category_item_key[key_type]" id="category_item_key_key_type"><option value="1">Value</option> 
<option value="2">Text</option> 
<option value="3">Image</option></select> 

    <input type="submit" name="commit" value="Add New Key" /> 
</form> 

,我有以下的集成測試形式

setup do 
    @user = users(:michael) 
    @user1 = users(:archer) 
    @guide = Guide.find(1) 
    @mod_relationship = game_mods_relationships(:mod1) 
    @category = Category.find(1) 
    Capybara.current_driver = Capybara.javascript_driver # :selenium by default 
    end 

test "adding keys mod success then fail" do 
    log_in_as(@user) 
    get edit_guide_category_path(@guide, @category) 
    assert_template 'categories/edit' 
    assert_difference 'CategoryItemKey.count', 1 do 
    fill_in 'Key name', with: "diablo" 
    click_button "commit" 
    end 

end 

,當我運行測試,我得到以下錯誤

Capybara::ElementNotFound: Capybara::ElementNotFound: Unable to find field "Key name"

看看HTML我可以看到字段是t這裏。如果我嘗試使用輸入id它仍然失敗,如果我刪除填充行,然後它說它不能找到按鈕來點擊哪裏也是。我假設它得到正確的頁面,因爲get edit_guide_category_path(@guide, @category)適用於其他測試(但它們是非js測試並且不使用硒)。

它可能是簡單的東西,但我不能得到它。

回答

2

你在混合兩個不同的庫 - 你不能使用get與水豚,你使用visit(url)去頁面。你也不應該在功能測試中聲明模板,這對於較低級別的測試來說也是如此。

+0

謝謝你的工作。此外,我應該使用什麼,而不是斷言模板?我想讓站點加載正確的頁面 – Rob

+1

在功能測試中,您檢查頁面的內容 - assert_text('頁面上的一些文本內容')等 –

+0

太棒了。感謝提示 – Rob

相關問題