Python выбрать изображение с ПК во всплывающем окне веб-страницы - PullRequest
2 голосов
/ 02 мая 2019

Я создаю инструмент для заполнения формы на веб-странице, используя python, и одним из требований является загрузка изображения, когда я нажимаю на кнопку, чтобы открыть это окно, как вы можете видеть на изображении ниже image of the popup

Теперь мой вопрос: есть ли в любом случае автоматический выбор изображения с моего компьютера (я знаю имя и путь к изображению), а затем дважды щелкните его, чтобы начать загрузку?

Примечание: я использую Python 3.7

Ответы [ 3 ]

1 голос
/ 04 мая 2019

Это можно сделать с библиотекой pywinauto .

Поэтому вам нужно сначала установить pywinauto, выполнив: pip install pywinauto .

Mostскорее всего, вам также понадобится win32api, поэтому установите: pip install pypiwin32 .

И из того, что я вижу, вы открываете диалоговое окно Windows с Chrome.Чтобы это работало, вам нужно узнать идентификатор процесса службы, чтобы иметь возможность подключиться к диалоговому окну.Для этого вам необходимо установить psutil: pip install psutil .

Код должен выглядеть следующим образом:

import pywinauto
import psutil

app = pywinauto.application.Application()
proc = psutil.Process(driver.service.process.pid).children()[0].pid
app.connect(process=proc)
dialog = app.top_window()
dialog.Edit.TypeKeys('"{}"'.format('INSERT IMAGE PATH HERE'))
dialog['&OpenButton'].Click()

Убедитесь, что вы указали полный путь к вашему файлу вместо этогоВСТАВЬТЕ ПУТЬ К ИЗОБРАЖЕНИЮ ЗДЕСЬ, и все готово.

Дайте мне знать, если вам нужна дополнительная помощь.

1 голос
/ 02 мая 2019

если это окно открывается, то, возможно, вы используете функцию askopenfilename библиотеки tkinter, доступную для python, т.е.

пример кода Ткинтера

from tkinter import filedialog
from tkinter import *

root = Tk()
root.filename =  filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
print (root.filename) #returns file path

чтобы вы могли видеть, что после выбора файла возвращается путь к файлу («root.filename»), поэтому вам нужно только найти функцию, которая возвращает путь и переменную, в которой сохраняется наш путь, и затем мы должны передать ранее известный путь к этой переменной вручную.

0 голосов
/ 02 мая 2019

Для обработки объекта Windows вы можете использовать autoit Однако есть привязка Python для AutoItX3.dll

Вам необходимо установить PyAutoIt используя pip.

pip install -U pyautoit

А затем используйте приведенный ниже кодовый блок.

import autoit

def file_upload(filepath):
 autoit.win_wait_active("File Upload",5)
 if autoit.win_exists("File Upload"):
    autoit.control_send("File Upload","Edit1",filepath+"{ENTER}")


filepath="C:\\filelocation\\filename.jpg"
file_upload(filepath) 

Дайте мне знать, если вам нужна дополнительная помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...