Капибара не заполнит_ в моих полях входа - PullRequest
4 голосов
/ 06 марта 2012

Я не могу заставить Капибару заполнить значения в моем поле для входа. Вот логин_спец.рб

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

Я ясно вижу, что идентификаторы элементов верны

<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) и name (user [username]), все с одинаковыми результатами. Я что-то упускаю здесь?

1 Ответ

6 голосов
/ 06 марта 2012

Что делать, если вы попытались добавить метку типа:

<label for="user_username">Username</label>

и в своей спецификации вы используете:

within ".login_form_widget" do
  fill_in 'Username', :with => 'Admin'
end

Нашли метки особенно полезными, но в остальном я не увиделчто-то не так с синтаксисом, который вы использовали выше.

...