先来安装:pip install pywin32
辅助定位工具winspy下载地址:https://sourceforge.net/projects/winspyex/
打开后是这玩意:
按住靶心拖拽到文件名选择框,显示选择框class类名为Edit,还有他的句柄Handle:
点击Windows,发现他的父级窗口是ComboBox:
再点击红框句柄进入ComboBox,发现其父级窗口是ComboBoxEx32。
同理可得ComboBoxEx32的父级窗口为一级窗口#32770,所以Edit是四级窗口。
同理可得打开按钮Button是二级窗口:
以博客园后台文件上传为例,打开上传windows窗口之后:
1 import win32gui 2 import win32con 3
4 # Chrome browser
5 def upload_file(file_path): 6
7 # 一级窗口
8 no1 = win32gui.FindWindow("#32770","打开") 9 # 二级窗口,4个参数:父级;从父级的第几个儿子开始检索,0表示第一个;自身类名;文本内容,没有则None
10 combo_box_ex32 = win32gui.FindWindowEx(no1, 0, "ComboBoxEx32", None) 11 # 3级窗口
12 combo_box = win32gui.FindWindowEx(combo_box_ex32,0,"ComboBox",None) 13 # 4级窗口
14 edit = win32gui.FindWindowEx(combo_box,0,"Edit",None) 15 # 二级打开按钮
16 button = win32gui.FindWindowEx(no1, 0, "Button", "打开(&O)") 17 # 输入文件地址
18 win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, file_path) 19 # 点击打开按钮 提交文件
20 win32gui.SendMessage(no1, win32con.WM_COMMAND, 1, button) 21
22 upload_file("C:\\1\\nihao.7z")
这样就可以成功上传了!(其他浏览器的元素文本信息有些许出入,火狐浏览器为”文件上传“,谷歌为”打开“,ie为“选择要加载的文件”。)