Загрузка файлов - известная трудная проблема, которую нужно решить в автоматизации браузера. Нам понадобятся некоторые материалы от сообщества, но вот демонстрация, с которой я только что поэкспериментировал с использованием робота каратэ: https://github.com/intuit/karate/tree/develop/karate-robot
Feature:
Scenario:
* driver 'http://the-internet.herokuapp.com/upload'
* robot { app: '^Chrome', highlight: true }
* robot.click('choose-file.png')
* robot.input('/Users/pthomas3/Desktop')
* robot.input(Key.ENTER)
* robot.click('file-name.png')
* robot.input(Key.ENTER)
* delay(1000)
* click('#file-submit')
* delay(2000)
* screenshot()
Видео с казнью можно посмотреть здесь: https://twitter.com/ptrthomas/status/1253373486384295936
Другие возможные варианты:
a) Используйте возможности тестирования API Карате для загрузки multipart
файла: https://github.com/intuit/karate#multipart -file - этого на самом деле в большинстве случаев достаточно, чтобы «завершить» имеющийся у вас поток. Например, для того же потока, который вы видите выше, он выглядит следующим образом:
* url 'http://the-internet.herokuapp.com/upload'
* multipart file file = { read: 'billie.png', filename: 'billie.png', contentType: 'image/png' }
* method post
И, как правило, вам может понадобиться добавить повара ie или двух, которые вы можете легко передать из браузер для API-теста / HTTP-клиента .
b) Другой вариант - это то, что я еще не пробовал, вы можете «подделать» часть пользовательского интерфейса, которая делает загрузите файл и замените его чем-то другим, если это поможет вам продвинуться вперед. См. Это: https://twitter.com/KarateDSL/status/1248996522357739521