тестирование plupload с капибарой, send_keys не генерирует событие FilesAdded

Я пытаюсь протестировать событие перетаскивания plupload с капибарой. Нормальный рабочий процесс

  1. пользователь щелкает/ (или может удалить файл) в области загрузки
  2. открывается окно локальной ОС
  3. нажмите на файл, нажмите ок
  4. файл прикреплен
  5. plupload генерирует событие 'FilesAdded' (которое творит магию)

Теперь в случае водосвинки вот шаги

filename = '/Users/name/full/path/file.pdf'
visit upload_document_path
element = find('#browse-button')
value = element.send_keys file

теперь эти шаги действительно прикрепляют файл, но plupload не генерирует событие «FilesAdded», если кто-то столкнулся с такой проблемой, пожалуйста, дайте мне знать, спасибо.


person hassan_i    schedule 03.10.2016    source источник
comment
Какой водитель? Какая версия капибары? Действительно ли '#browse-button' является элементом input[type='file']? Что заставляет вас говорить, что он на самом деле прикрепляет файл? Какое событие ищетpulpupload, чтобы инициировать создание собственного события FilesAdded?   -  person Thomas Walpole    schedule 03.10.2016
comment
селен, капибара (2.7.1), ‹тип ввода=идентификатор файла=кнопка обзора /›, перетащить файл или прикрепить файл   -  person hassan_i    schedule 03.10.2016


Ответы (1)


Предполагая, что вы используете plupload (поскольку я не могу найти ни одного онлайн-проекта под названиемpulpulpoad), тогда он ищет событие «change», которое будет запущено, чтобы вызвать запуск собственного события FilesAdded — https://github.com/moxiecode/plupload/blob/master/js/plupload.dev.js#L1064 . С Capybara вы должны звонить

attach_file('browse-button', file)

который, в конце концов, сводится к send_keys, но перед этим выполняет несколько проверок, чтобы убедиться, что он работает правильно.

Если это не работает для вас, и вы используете selenium-driver 2.53.4 и FF ‹= 47.0.1, вам нужно опубликовать полученную ошибку и образец html. Если вы используете бета-версию selenium-webdriver 3.xx и FF >= 48, то вы, вероятно, сталкиваетесь с этой ошибкой — https://github.com/mozilla/geckodriver/issues/168 - что, по-видимому, решено в FF 49.0.1

person Thomas Walpole    schedule 03.10.2016
comment
Я использую selenium-webdriver (2.53.4), FF (47.0), но, к моему удивлению, attach_file показывает то же поведение, что и send_keys, то есть просто прикрепляет файл, но не генерирует событие. - person hassan_i; 04.10.2016
comment
Предполагая, что вы имеете в виду FF (47.0.1), тогда у вас либо есть обработчик событий, который проглатывает событие изменения и не позволяет plupload видеть его, либо у вас есть ошибка JS в вашем коде, которая не позволяет plupload прикреплять свои обработчики событий в первом место - person Thomas Walpole; 04.10.2016
comment
Я изменил свой драйвер с селена на полтергейст, и все работало нормально, но, что более важно, это был ответ Тома об использовании attach_file вместо send_keys, поэтому я выбрал это как ответ. Спасибо. - person hassan_i; 17.10.2016