Загрузка изображения на сайт с помощью Selenium

Здравствуйте.
Необходимо вставить картинку на сайт, но открывается окно менеджера файлов, с которым Селен работать не может. Сторонние инструменты такие как Sikuli использовать нельзя.
Каким образом можно решить эту задачу? В голове есть вариант: сделать тот же вызов, который делает фронтенд при загрузке файла, но как это сделать не могу понять.
Буду благодарен за помощь.

в input, где находится загрузка файла, нужно ввести путь к файлу при помощи команды селениума Sendkeys, и файл загрузится

Спасибо за ответ. Но я забыл указать, что нет input

в смысле не обычный input в виде поля, а input тег в html
например так выглядит кнопка загрузки файла у фейсбука
image

Я понимаю о чем вы. В моем случае это вот так

Прям сюда или где то рядом пробовали ввести?

раньше делал такую лабуду
а сейчас вот думаю а зачем это автоматизаровать selenium?
тут скорее сервис откажет чем UI

Извините за ожидание. Да прямо сюда. Выдает:

C button тоже самое? Через апи можно попробывать если не принципиально загружать через UI. Или на краний случай использовать либу, которая выполняет действия клавиатуры комьютера, но это плохой вариант как по мне.

Вот не сказал бы… UI на JS написан и может неожиданно отвалиться то, что ты и не трогал даже. Буквально вчера был такой случай. К счастью регрессионные тесты поймали, а так бы легко могло улететь и на прод…

Почему плохой? Разные тесты - разные технологии. По факту нужно комплексное рабочее решение. И только end-2-end может сказать наверняка, что все работает. Unit / Integration / API - хорошо, но без фулл E2E нет полной страховки. Для некоторых отраслей это очень критично.

В несколько потоков лучше не запускать), а так решение рабочее

Была подобная проблема, инпут может появиться после какого-то ивента, или клик на кнопку или если навести мышку на элемент, он точно есть но надо понять как его вызвать. В моему случае надо было js дёрнуть.

В button никаких ошибок не происходит, но картинка не появляется.

Попробую сейчас нажать на “ЗАгрузить”, а потом вставить в input.


Все равно не работает. Он открывает окно после нажатия на кнопку, а когда вставляешь в input, выдает эксепшн.

Ну надо искать, не факт что именно в тот инпут, я помню 1 раз нужный мне инпут вообще находился не в том месте что я ожидал. Нужно искать

1 лайк

Решил попробовать свой метод: отправкой такого же http-запроса, как и тот, который отправляет фронт во время нажатия на загрузить. Но столкнулся с проблемой, что не не нашел как же все таки отправлять запросы. Их можно вообще из селена отправлять или надо сторонние библиотеки?