python中GUI的测试方面pywinauto库是一个不错的选择。
pywinauto最新的版本是0.4.2,需要在官网下载https://pywinauto.googlecode.com/files/pywinauto-0.4.2.zip(需要翻墙才可以,有时翻墙也下载不了,基于这个我百度云分享出来,可以供需要的同学下载,下面是我的百度云共享地址:http://pan.baidu.com/s/1dDhfo4p)
我的环境是win7-64位操作系统,python2.7.9-32位安装包。
pip install pywinauto 安装的版本不是最新的版本,这个跟pip的源有关系,所以还是得自己下载最新版本的包,然后python setup.py install 这样来安装!
百度或者google上搜索pywinauto有很多文章和教程来描述pywinauto的使用,不过得注意上面我的描述,得注意版本号!!!
我自己使用pywinauto这个是为了使用一个windows的程序来实现自动化的操作,这个不太合适在这里讲,因为不太通用,可能看此文的人很多都没我这个软件。
所以还是以记事本为例子在这里简单讲下这个使用流程:
1)运行一个程序实例
app = application.Application() app.start_("notepad.exe")
start_() --------函数是开始一个进程
connect_() --------函数是连接一个已经打开的进程
这个具体可以看源码。
win = app.window_() ------------是找窗口
参数的话主要是title/title_re/class_name/class_name_re/
带_re的是可以正则匹配。
参数:
class_name = None, class_name_re = None, parent = None, process = None, title = None, title_re = None, top_level_only = True, visible_only = True, enabled_only = False, best_match = None, handle = None, ctrl_index = None, predicate_func = None, active_only = False, control_id = None,
2)如何发送按键信息
Pywinauto使用SendKeys来进行按键处理,可以参考:
http://www.rutherfurd.net/python/sendkeys/
1. 发送快捷键
MainWin.TypeKeys("%F") #按Alt+F
Key | Meaning |
+ | SHIFT |
^ | CTRL |
% | ALT |
多个按键时可以使用间隔时间:
MainWin.TypeKeys("%IPS",pause=0.5) #在Word2003打开从扫描仪导入图片的窗口
注意,TypeKeys并不是安全地将按键发送到目标窗口,所以尽量减少使用或者
测试时减小其它操作干扰。
2. 使用SendMessage实现
(参考:http://blog.csdn.net/horkychen/article/details/6324530)
3)如何控制Mouse
示例:
def AdjustSizeOnPreview(WizardDlg,ShiftX,ShiftY):
Offset = 10
OrgRect = WizardDlg.WiaPreviewControl1.Rectangle()
WizardDlg.WiaPreviewControl1.PressMouse(coords = (Offset,Offset))
WizardDlg.WiaPreviewControl1.MoveMouse(coords = (Offset+ShiftX,Offset+ShiftY))
WizardDlg.WiaPreviewControl1.ReleaseMouse()
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2015-06-24新增
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------