Python在网页弹出窗口中从PC选择图像

时间:2019-05-02 10:46:35

标签: python python-3.x selenium selenium-webdriver

我正在构建使用python在网页上填写表单的工具,其中一项要求是在我点击按钮时上传图片,它打开了此窗口,如下图所示 image of the popup

现在我的问题是:是否有从我的PC中自动选择图像(我知道名称和图像路径),然后双击它以开始上传?

注意:即时通讯使用python 3.7

3 个答案:

答案 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

有Python绑定

您需要使用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) 

让我知道您是否需要进一步的帮助。