#ruby #capybara
#ruby #capybara
Вопрос:
У меня есть
<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:
Опубликованное вами сообщение об ошибке — это сообщение об ошибке, которое возвращается, когда файл, который вы пытаетесь загрузить, не существует.
Проблема в том, что вы не должны передавать input[id=file]
в качестве имени файла. Я не уверен, какую версию Capybara вы используете, но в текущих версиях она attach_file
определяется как def attach_file(locator = nil, paths, make_visible: nil, **options)
, где locator — это имя, идентификатор или связанный текст метки входного файла, а 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