Капибара не позволяет прикрепить событие onsubmit к форме - PullRequest
0 голосов
/ 14 сентября 2018

В моем приложении rails я присоединяю событие onsubmit к своей форме, используя jquery, например:

$("form.my_form").submit(function(){
   alert("test")
   return true;
 });

Это работает нормально, когда я вручную открываю страницу и отправляю форму (нажимая на кнопку отправки) - я вижу предупреждение "test"

НО у меня есть тест Capybara (поверх Selenium), который загружает страницу, заполняет некоторые значения в форме, а затем нажимает кнопку «Отправить». И функция НЕ срабатывает.

Примечание 1: при запуске теста форма действительно отправляется, новые значения записываются в БД и т. Д., Поэтому не возникает проблем с нажатием самой кнопки отправки

Примечание 2: если вместо jquery, в представлении rails в теге form_for я поставлю

html: {onsubmit: "onsubmitfunc();"}

с предупреждением в onsubmitfunc () - все работает как положено в тесте на капибару

Примечание 3: для работы jquery файл js откладывается, например ::11016*

<%= javascript_include_tag 'application', defer: true %>

Я очень новичок в JQuery, поэтому я совершаю там что-то преступное? Или у Капибары есть какие-то проблемы? с отложенной загрузкой файла JS? Или с помощью JQuery? Есть идеи?

1 Ответ

0 голосов
/ 14 сентября 2018

Поскольку вы используете Selenium, наиболее распространенной причиной будет ошибка в одном из ваших ресурсов JS. Когда в среде dev все ваши ресурсы JS обслуживаются в отдельных файлах, это означает, что ошибка в одном файле не останавливает обработку других. В тестовой среде (и рабочей среде) активы объединяются в один файл, что означает, что ошибка в любом файле может привести к объединению активов после того, как он не будет обработан.

Проверьте журнал консоли браузера на наличие ошибок JS и исправьте их.

...