Тестирование загрузки файлов с помощью Capybara - не форма, а кнопка и функция JavaScript - PullRequest
0 голосов
/ 25 февраля 2019

Я изо всех сил пытаюсь заставить этот тест работать, проверил несколько подходов, и пока ничего не работает.У меня есть кнопка

<div >
  <a href class="btn btn-default btn-block btn-lg btn-shadowed ut-upload-button"
    ng-file-select
    ng-file-change="uplFile($event, $file)">
    <i class="icon">i</i>
  </a>
</div>

это кнопка, при нажатии которой открывается браузер файлов ОС, любой знает, как заставить это работать, как я пытался attach_file, page.attach_file, find (". Ut-upload-кнопка "). set (Rails.root + 'spec / files / file.txt')

После загрузки страницы должен отображаться тост Успех

expect(page).to have_toast('Success')

Извините, если это основнойошибка или глупый вопрос, я только начинаю использовать rspec и capybara и полностью потерялся

1 Ответ

0 голосов
/ 25 февраля 2019

Вы не можете сделать это, потому что, как только открывается системный браузер файлов, драйвер не может взаимодействовать с ним.Вам нужно позвонить attach_file для фактическогоэлемент (который в вашем случае, вероятно, скрыт на странице).Поскольку вы не показываете свой HTML, я не могу предоставить точный код - но при условии, что у вас есть элемент, подобный следующему

<input type='file' name='file_upload'>

, и что вход скрыт от просмотра через CSS некоторого типа, точто-то вроде

page.attach_file('file_upload', Rails.root + 'spec/files/file.txt', make_visible: true)

должно работать на вас.Если на страницу загружен только один файл, вы также можете выполнить

page.attach_file(Rails.root + 'spec/files/file.txt', make_visible: true)

. Если вы хотите попробовать основную ветвь проекта Capybara, в настоящее время он имеет пробную поддержку для передачи блока на * 1011.* который открывает селектор файлов.В вашем случае это, вероятно, будет что-то вроде

page.attach_file(Rails.root + 'spec/files/file.txt') do
  page.find(".ut-upload-button").click
end

Эта функция предназначена для пользовательского тестирования и может или не может сделать это в Capybara 3.15 (в зависимости от того, насколько хорошо, как сообщается, работает со многими, многими, многими).способы стилизации входных файлов), когда он будет выпущен примерно через месяц.

...