2012-03-06 3 views
4

Я не могу получить Capybara для заполнения значений в моем поле входа. Вот login_spec.rbCapybara не заполняет поля ввода

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 

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

<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> 

Я пробовал использовать идентификатор элемента (user_username) и имя (пользователь [имя пользователя]), все с теми же результатами. Здесь что-то не хватает?

ответ

6

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

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

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

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

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

+0

Я уже пробовал это с теми же результатами. Считаете ли вы, что проблема может быть связана с тем, что форма входа в систему дважды отображается на одной странице? Когда вы посещаете мою страницу входа в систему, есть обычная форма входа в систему, но есть и заголовок, чтобы пользователи могли войти на любую страницу. Это может быть проблема? – Ken

+1

Если вы настроите таргетинг на идентификаторы, которые будут проблемой. На практике у вас не должно быть одинакового идентификатора, отображаемого дважды на одной странице. Если это так, то в вашей спецификации вы можете обернуть свой материал fill_in блоком «внутри» селектора, чтобы настроить таргетинг на определенное поле входа. Обновлено в ответ –

+0

Yup, оказывается, идентификаторы элементов на странице входа в систему совпадают с формой входа в заголовок. Что-то, как прошло, прошло. Использование внутри блока исправлено это временно, пока я исправляю имена идентификаторов. Спасибо за вашу помощь! – Ken

Смежные вопросы