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