Я пытаюсь прикрепить файл в моей спецификации, но метод capybara attach_file не работает для меня в poltergeist (он возвращает true, но ничего не прикрепляется). Он работает в Selenium, но по другим причинам я хочу использовать poltergeist. Я знаю, что метод phantomjs uploadFile (http://phantomjs.org/api/webpage/method/upload-file.html) имитирует пользователя, взаимодействующего с диалоговым окном файла, который, как мне кажется, мне нужно делать. Я не могу понять, как использовать его, хотя в моей спецификации Capybara.Как использовать phantomjs uploadFile с Capybara и poltergeist?
Я пытаюсь использовать
def drop_files(files, css_selector)
js_script = 'fileList = Array(); '
files.count.times do |index|
# Generate a fake input selector
page.execute_script("if ($('#seleniumUpload#{index}').length == 0) { " \
"seleniumUpload#{index} = window.$('<input/>')" \
".attr({id: 'seleniumUpload#{index}', type:'file'})" \
".appendTo('body'); }")
# Attach file to the fake input selector through Capybara
attach_file("seleniumUpload#{index}", files[index], visible: false)
# Build up the fake js event
#
js_script << "fileList.push(seleniumUpload#{index}.get(0).files[0]); "
end
js_script << "e = $.Event('drop'); "
js_script << "e.dataTransfer = { files : fileList }; "
js_script << "$('#{css_selector}').trigger(e);"
# Trigger the fake drop event
page.execute_script(js_script)
end
который приходит от https://github.com/teampoltergeist/poltergeist/issues/342 и работает в селена. Пользователь, который опубликовал сообщение, говорит, что он работает в полтергейсте.
Нет Полтергейста 2.0 - вы имеете в виду phantomjs 2.0? К чему вы перешли? – Grandpa
К сожалению, я исправил свой ответ, извините. Я понизился до версии 1.9.8. – Brandon