Как загрузить ресурс с помощью капибары? - PullRequest
0 голосов
/ 21 марта 2019

У меня есть

<input type="file" name="file" id="file" class="form-control-file teste" style="display: inline" ;="" accept=".pdf">

И попробуйте

attach_file('file','PATH')

Попробуйте тоже

find('form input[type="file"]').set('PATH')

но мой результат был

cannot attach file, input[id=file] does not exist (Capybara::FileNotFound)

1 Ответ

0 голосов
/ 22 марта 2019

Отправленное вами сообщение об ошибке - это сообщение об ошибке, которое возвращается, когда файл, который вы пытаетесь загрузить, не существует.

Проблема в том, что вы не должны передавать input[id=file] в качестве имени файла.Я не уверен, какую версию Capybara вы используете, но в текущих версиях attach_file определяется как def attach_file(locator = nil, paths, make_visible: nil, **options), где локатор - это имя, идентификатор или связанный текст метки ввода файла, а paths - полное имя.файла для загрузки (или, возможно, массив имен файлов).Проблема заключается в том, что не похоже, что какой-либо код, который вы показали, мог выдать ошибку, на которую вы претендуете, если вы не поменяли местами аргументы и неправильно передали селектор CSS, а не локатор.

Примечание: Capybara 3.15 с некоторыми драйверами (должны быть любые драйверы с поддержкой JS) поддерживает бета-режим для attach_file, где вам не нужно указывать ввод файла, а вместо этого просто нужно взаимодействовать с тем, что пользователь сделает свызвать выбор файла, который может быть полезен при попытке тестирования с пользовательскими интерфейсами, которые скрывают элементы ввода файла

attach_file 'PATH' do
  click_button 'Select File' # whatever action a user would do to select the file
end
...