4
我不能讓水豚填寫我的登錄字段的值。這裏的login_spec.rb水豚不會fill_in我的登錄字段
require 'spec_helper'
describe "the login process" do
it "signs me in" do
visit '/login'
fill_in 'user_username', :with => 'Admin'
fill_in 'user_password', :with => 'Password'
end
end
當我運行測試時,出現以下錯誤:
1) the login process signs me in
Failure/Error: fill_in 'user_username', :with => 'Admin'
Capybara::ElementNotFound:
no text field, text area or password field with id, name, or label 'user_username' found
# (eval):2:in `fill_in'
# ./spec/integration/login_spec.rb:7:in `block (2 levels) in <top (required)>'
但是,當我使用
print page.html
我打印頁面的內容可以清楚地看到元素ID是否正確
<h2>Already Have an Account?</h2>
<form accept-charset="UTF-8" action="/login" id="sidebar_login" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓"><input name="authenticity_token" type="hidden" value="DccrBxhdS7WTAM/iEd08L4z9zt8MjBKTxQ0s6lMVIAA=">
</div>
<div class="form"></div>
<div class="login_form_widget">
Username
<div class="inputdiv_widget">
<input class="textfield" id="user_username" name="user[username]" type="text">
</div>
Password
<div class="inputdiv_widget">
<input class="textfield" id="user_password" name="user[password]" type="password">
</div>
我試過使用元素的id(user_username)和名稱(user [username]),所有的結果都一樣。有什麼我在這裏失蹤?
我已經嘗試過,結果相同。您認爲問題可能是由於登錄表單在同一頁面上呈現兩次?當您訪問我的登錄頁面時,會有常規登錄表單,但標題中也有一個,因此用戶可以在任何頁面上登錄。這可能是一個問題嗎? – Ken 2012-03-06 19:57:30
如果您通過身份驗證來定位問題。在實踐中,你不應該在同一頁面上兩次渲染相同的ID。如果是這種情況,那麼在你的規範中,你可以用一個'within'選擇器''塊來包裝你的fill_in東西來定位一個特定的登錄字段。更新回答 – 2012-03-06 20:00:09
是的,事實證明,登錄頁面上的元素ID與標題中的登錄表單相同。那有些怎麼通過了我。在我修復ID名稱時,使用內部塊臨時解決了這個問題。謝謝你的幫助! – Ken 2012-03-06 20:05:28