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')

 

posted @ 2019-03-15 16:14  赵小丫  阅读(1939)  评论(3编辑  收藏  举报