python-web自动化-文件上传操作(非input标签的上传,需要借助第三方工具)

时间:2022-07-20 19:52:21

文件上传操作

一、文件上传分两种情况:
1. 如果是input可以直接输入路径的,可以直接调send_keys输入路径

2. 非input标签的上传,需要借助第三方工具:
    2.1 Autolt 需要去调用其生成的.au3或.exe文件.----不推荐,了解
    2.2 SendKeys第三方库(目前只支持到2.7版本)----不推荐,了解
    2.3 Python pywin32库,识别对话框句柄,进而操作 ------pip install pywin32

二、文件上传框,定位工具Winspy:

上传窗口 dialog(win32gui.FindWindo)=======子窗口:打开按钮 button (win32gui.FindWindowEx)
                        ||
子窗口 ComboBoxEx32 (win32gui.FindWindowEx)
                       ||
子窗口 ComboBox (win32gui.FindWindowEx)
                        ||
子窗口:文件路径输入框 edit(win32gui.FindWindowEx)

举例: 利用百度网盘,要先登录百度网盘,并打开上传文件窗口

-----此代码可以直接使用,一般不会变动,只需要注意不同的浏览器,文件上传弹窗的第一级窗口的名字不同即可

 import win32con
import win32gui def upload(filePath,browser_type="Chrome"):
# Chrome浏览器
if browser_type == "Chrome":
title = "打开"
# Firefox浏览器
else:
title = "文件上传" dialog = win32gui.FindWindow("#32770",title) #一级窗口 ‘打开窗口’
ComboBoxEx32 = win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None) #二级
ComboBox = win32gui.FindWindowEx(ComboBoxEx32,0,"ComboBox",None) #三级
edit = win32gui.FindWindowEx(ComboBox,0,"Edit",None) #四级
button = win32gui.FindWindowEx(dialog,0,"Button",None) #四级 # 往文件名编辑框中输入文件路径
# 上传操作
win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filePath)
win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button) #点击打开按钮 upload('E:\我\软件进度.xlsx')