Отправленное вами сообщение об ошибке - это сообщение об ошибке, которое возвращается, когда файл, который вы пытаетесь загрузить, не существует.
Проблема в том, что вы не должны передавать 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