Поля формы автозаполнения webrat
Я изучаю, как писать тесты с огурцом /webrat. Один из моих тестовых сценариев установлен для проверки проверки формы (оставляя поле пустым). Как ни странно, поля, которые я не заполняю с помощью fill_in
, устанавливаются в поле name
. Это происходит только тогда, когда я запускаю огурец, при использовании браузера этого не происходит.
Шаг, который я использую, прямо:
When /^I submit the form$/ do
# Not filling in the 'Name' field here
fill_in 'Description', :with => 'This is a description'
click_button 'Save'
end
После запуска сценария, который использует вышеприведенный шаг, я вижу, что текстовое поле "Имя" установлено на "имя" вместо пустого. Это также имеет место, если я заполняю это поле пустым пространством или nil
:
fill_in 'Name', :with => ''
Форма, которую я тестирую, достаточно проста:
<form action="/item/create" method="post">
<div>
<label for="ItemName">Name</label>
<input type="text" name="name" id="ItemName" />
</div>
<div>
<label for="ItemDescription">Description</label>
<textarea name="description" id="ItemDescription"></textarea>
</div>
<input type="submit" value="Save" />
</form>
Любая идея, почему это происходит?
Ответы
Ответ 1
Я предполагаю, что вы используете Webrat с адаптером Mechanize, верно? Если это так, я был очень расстроен тем же вопросом. Оказывается, это ошибка в том, как Webrat передает значения полей поля Mechanize. Здесь вы можете найти подробности и патч: https://webrat.lighthouseapp.com/projects/10503/tickets/384-webrat-does-not-pass-empty-form-fields-correctly-to-mechanize
В качестве альтернативы, если вы не хотите использовать исправленную версию Webrat, немного неоптимальным обходным решением является вместо этого fill_in с пробелами ('') и убедитесь, что проверка правильности ввода в приложении обрезает или игнорирует пробелы при рассмотрении вопроса о том, поле заполнено правильно.
К сожалению, похоже, существует ряд таких проблем, которые внесли исправления, которые не были объединены в "официальную" кодовую базу Webrat. Я отправил электронное письмо автору примерно полтора месяца назад, чтобы спросить, поддерживает ли он его, а если нет, подумайте о том, чтобы позвонить кому-то, кто будет, так как многие люди все еще используют его. На сегодняшний день я еще не получил ответа.
Ответ 2
Одна вещь, которую вы можете попробовать, - убедиться, что автозаполнение отключено в этом поле (autocomplete = "off" ), чтобы увидеть, влияет ли это на результат.
<form action="/item/create" method="post">
<div>
<label for="ItemName">Name</label>
<input type="text" name="name" id="ItemName" autocomplete="off" />
</div>
<div>
<label for="ItemDescription">Description</label>
<textarea name="description" id="ItemDescription"></textarea>
</div>
<input type="submit" value="Save" />
</form>
Ответ 3
Можете ли вы попробовать что-то подобное в шаге?
Учитывая, что% {заполняю "имя" знаком ""}
Или даже лучше, в файле функций используйте
Учитывая, что я заполняю "имя с".
Я также предлагаю переехать в Капибару, вы можете делать такие вещи:
https://github.com/jnicklas/capybara/issues/issue/219
Что позволит вам настроить профили Firefox для ваших тестов на селен.