2012-05-18 2 views
1

У меня есть страница формы с полем подтверждения для адреса электронной почты и пароля, как с надписью «Подтверждение». Это не удается при работе с RSpec, как и ожидалось. Если я сделаю этикетки уникальными, скажем, изменив метку электронной почты на «Подтверждение электронной почты», она пройдет. Я предпочел бы сохранить эти метки одинаковыми. Если я использую идентификатор электронной почты, сгенерированный form_for, Capybara кажется счастливым, но тест терпит неудачу. Я также попробовал имя с тем же результатом.Capybara не заполняет поля дублирующими ярлыками

RSpec/Капибара экстракт:

fill_in "company_contact_email_confirmation", with: "[email protected]" 

form_for экстракт:

<div class="field"> 
    <%= f.label :contact_email_confirmation, "Confirmation" %><br /> 
    <%= f.email_field :contact_email_confirmation %> 
</div> 

Сформирован Источник: сообщение

<div class="field"> 
    <label for="company_contact_email_confirmation">Confirmation</label><br> 
    <input id="company_contact_email_confirmation" name="company[contact_email_confirmation]" size="30" type="email"> 
</div> 

Ошибка:

1) страницы компании подписаться с ва информация крышка должна создать компанию

Failure/Error: expect { click_button submit }.to change(Company, :count).by (1) 
    count should have been changed by 1, but was changed by 0 

Если я использую Капибара within, как было предложено в другом месте здесь, он по-прежнему не работает:

RSpec/водосвинку экстракт:

within ".email_stuff" do 
    fill_in "Confirmation", with: "[email protected]" 
end 

form_for экстракт :

<div class="email_stuff"> 
    <div class="field"> 
    <%= f.label :contact_email_confirmation, "Confirmation" %><br /> 
    <%= f.email_field :contact_email_confirmation %> 
    </div> 
</div> 

Сгенерированный источник:

<div class="email_stuff"> 
    <div class="field"> 
    <label for="company_contact_email_confirmation">Confirmation</label><br /> 
    <input id="company_contact_email_confirmation" name="company[contact_email_confirmation]" size="30" type="email" /> 
    </div> 
    </div> 

Capybara, похоже, не жалуется, но тест не срабатывает при той же ошибке. Как мне заставить Capybara позволить мне использовать одну и ту же метку дважды в одной и той же форме?

+0

Только для теста, где вы определяете свой тест, добавьте это: «js => true», чтобы визуализировать, что происходит в браузере (появится страница) – cristian

+0

У меня было много проблем с получением selenium-webdriver для запуска с Firefox. После долгих усилий (наконец, Firefox 10 и selenium-webdriver 2.20.0) я получаю страницу, которая появляется с «не может поддерживать безопасное соединение» или что-то подобное, а затем мгновенно закрывается. Затем тест заканчивается на Capybara :: ElementNotFound в первом поле fill_in, что неверно, потому что без дубликата метки тест проходит. –

ответ

0

Я добавил некоторые операторы отладки в обратный вызов ActiveRecord after_validation, чтобы увидеть статус полей виртуального подтверждения. Как показано в моем коде выше, я ссылался на поле подтверждения по электронной почте по имени или идентификатору, но не с полями подтверждения пароля и подтверждения по электронной почте с идентификаторами. Capybara помещал данные пароля в неправильное поле подтверждения, так как поле подтверждения электронной почты было первым в форме. Если бы я ввел идентификаторы в поле пароля, это сработало бы. Идентификаторы на обоих безопаснее.