@GromWolf

Как в python установить взаимодействие с ОС?

Доброго времени хабарчане.
Вопрос вот какой:
Пишу приложение, которое работает с браузером, и в один момент оно должно загружать в браузер фото, файл или другой материал. Так вот, при загрузке у меня открывается окно (проводник) где я должен указать путь к файлу (либо сам файл), который необходимо загрузить.
Вопрос - как научить машину работать с проводником и вбивать в поисковое поле нужный мне путь к файлу???
Подскажите, что мне посмотреть, где почитать или же поделитесь опытом.
Заранее огромное спасибоf5aa4de534854d5990c4d514ce11389a.jpg
  • Вопрос задан
  • 1325 просмотров
Решения вопроса 3
GavriKos
@GavriKos
Самое примитивное - FindWindow и все около того в составе win32gui.
Но подход крайне странный, возможно вашу задачу можно решить проще.
Ответ написан
Rou1997
@Rou1997
Боюсь такие странные костыли это необходимость, типа не палимся и по максимуму подражаем человеку.

Это явный перебор чтобы оправдать свое незнание, не нужно такого, достаточно воспользоваться headless-браузером вроде phantom.js, он вполне имитирует настоящий браузер коим и является, в то же время там предусмотрена автоматизация заполнения таких полей.
А ваш вариант, между прочим, ненадежен и требует большого тестирования, поскольку в разных версиях Windows различается этот диалог, не говоря уже о случае когда установлено ПО вроде Stardock WindowBlinds.
А если все-таки хотите, то либо изучайте WinAPI и конкретно это окно, а лучше изучайте его еще глубже и применяйте не "автокликерство", а "хуки" на те функции WinAPI которые инициируют диалог с загрузкой вашей DLL в память процесса браузера, это надежнее, и познакомиться с этим направлением полезнее.
Ответ написан
vasily-v-ryabov
@vasily-v-ryabov
Python, UI Automation, pywinauto
Зачем использовать напрямую pyWin32 и FindWindowEx (кстати, а не FindWindow, если это соседний процесс).
Есть pywinauto, который все детали Win32 API скрывает.

Есть пример, как сделать подобное на pywinauto (писал мой студент):
https://github.com/vasily-v-ryabov/ui-automation-c...
Скрипт перетаскивает файл из explorer.exe в Google Disk, открытый в Chrome.

Но вообще, лучше pywinauto начать изучать отсюда (там основная концепция и что поддерживается под капотом):
https://pywinauto.readthedocs.io/en/latest/getting...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
lxsmkv
@lxsmkv
Test automation engineer
если сам диалог загрузки не является предметом теста, то тут нужно максимально стараться обойтись без заморочек свазаных с ним. Т.е. применить решение предложеное выше - прямая загрузка в обход диалога.
Ответ написан
Комментировать
ipatov_dn
@ipatov_dn
смотря на какой ресурс вы фото загружаете можно и с помощью api этокое делать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы