我正在构建使用python在网页上填写表单的工具,其中一项要求是在我点击按钮时上传图片,它打开了此窗口,如下图所示
现在我的问题是:是否有从我的PC中自动选择图像(我知道名称和图像路径),然后双击它以开始上传?
注意:即时通讯使用python 3.7
答案 0 :(得分:1)
如果此窗口正在打开,则可能是您正在使用可用于python的tkinter库的askopenfilename函数。
tkinter的示例代码
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”),因此,您只需找到返回路径的函数和保存路径的变量,然后我们必须手动将先前已知的路径传递给该变量。
答案 1 :(得分:1)
这对 pywinauto 库是可行的。
因此,您需要先通过运行以下命令来安装pywinauto: pip install pywinauto 。
很可能还需要win32api,因此请安装: pip install pypiwin32 。
从我所看到的,您正在使用Chrome打开Windows对话框。为此,您将需要找出服务的进程ID以能够连接到对话框。为此,您需要安装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()
确保您在此处插入文件的完整路径,而不是在此处插入图像路径。
如果您需要更多帮助,请告诉我。
答案 2 :(得分:0)
要处理Windows对象,可以使用autoit
但是AutoItX3.dll
您需要使用pip安装PyAutoIt
。
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)
让我知道您是否需要进一步的帮助。