Подтвердить что ты не робот

Поля формы автозаполнения 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>

Любая идея, почему это происходит?

4b9b3361

Ответ 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 для ваших тестов на селен.