python-web自动化-文件上传操作(非input标签的上传,需要借助第三方工具)
文件上传操作
一、文件上传分两种情况:
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)
举例: 利用百度网盘,要先登录百度网盘,并打开上传文件窗口
-----此代码可以直接使用,一般不会变动,只需要注意不同的浏览器,文件上传弹窗的第一级窗口的名字不同即可
1 import win32con 2 import win32gui 3 4 def upload(filePath,browser_type="Chrome"): 5 # Chrome浏览器 6 if browser_type == "Chrome": 7 title = "打开" 8 # Firefox浏览器 9 else: 10 title = "文件上传" 11 12 dialog = win32gui.FindWindow("#32770",title) #一级窗口 ‘打开窗口’ 13 ComboBoxEx32 = win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None) #二级 14 ComboBox = win32gui.FindWindowEx(ComboBoxEx32,0,"ComboBox",None) #三级 15 edit = win32gui.FindWindowEx(ComboBox,0,"Edit",None) #四级 16 button = win32gui.FindWindowEx(dialog,0,"Button",None) #四级 17 18 # 往文件名编辑框中输入文件路径 19 # 上传操作 20 win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filePath) 21 win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button) #点击打开按钮 22 23 24 upload('E:\我\软件进度.xlsx')