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