最近测试的项目中涉及到上传文件的功能,自动化脚本中需要使用python win32模块来操控,记录下使用心得吧!
1.首先引入python win32gui模块
import win32gui
2.安装spyxx.exe,用于定位win窗口
准备工作做好了,开工吧
3.点击类似“上传”等按钮后会弹出win窗口,那就先定位它吧,如下
定位代码如下:
uploadwindowname = u‘打开‘ #CHROME窗口名称是打开
uploadwindow = win32gui.FindWindow(‘#32770‘, uploadwindowname)#定位“文件上传 窗口
print uploadwindow
最后输出,如果输出0说明定位失败了
parent=win32gui.FindWindowEx(uploadwindow,None,‘ComboBoxEx32‘,None)
Combobox_real=win32gui.FindWindowEx(parent,None,‘ComboBox‘,None)
Edit_box=win32gui.FindWindowEx(Combobox_real,None,‘Edit‘,None)
这段代码是先定位到最上层的父窗口,再逐层定位到输入框(chrome于FF有所不同,FF下可以直接定位)
win32gui.SetForegroundWindow(Edit_box)
time.sleep(1)
win32gui.SendMessage(Edit_box,win32con.WM_SETTEXT,None,r‘C:\Users\gmsd12\Desktop\BLAT_blacklist.xls‘)
openbuttonname = u‘打开(&O)‘
time.sleep(1)
openbutton = win32gui.FindWindowEx(uploadwindow, None,"Button",openbuttonname)#定位“保存”按钮
print openbutton
win32gui.PostMessage(openbutton, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, 0)
win32gui.PostMessage(openbutton, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, 0)
这段代码是把输入框置顶,否则无法输入,输入文件路径后,定位到打开按钮,保存按钮,最后回车键按下再松开。
至此完成了上传文件时操作win窗口,其中FF下和Chrome下窗口名称有所不同(当时还被折磨了好久才发现(⊙﹏⊙)),IE的暂时没有试过。