用pywinauto进行win32应用程序的测试
2014-12-12 23:32
218 查看
用pywinauto进行win32应用程序的测试
今天整理自己的博客,发现已经快一年没有更新了,汗。今天给大家介绍的是pywinauto,它是用python语言编写的开源测试工具,专用于测试win32应用,其官网网址是:http://pypi.python.org/pypi/pywinauto/0.4.0
我之前做win32应用测试时,用过很多大家耳熟成详的工具,接触pywinauto之前,对它的了解也不多,然而,随着对它了解的增多,发现它借助了python动态对象的能力,使得代码即便于书定,也便于阅读,而且功能非常强大,最重要的一点,就是它以一种比较优雅的方式对win32窗体、控件进行各种操作,不再使用以往录制-修改代码的方式。
例如以下的例子(以下代码均在英文操作系统上测试通过:
如果在英文操作系统下,运行以上代码,可以清楚的看到软件工作的全部过程。
看到这里,大家会问,上面说的这些变量是怎么来的?为什么就可以被调用呢?
这就是pywinauto的特色,它先通过app获得某应用程序的句柄,然后用“模糊匹配”的方式去查找对应的窗口和控件,以上的例子中,由于写字板的标题是Untitled – Notepad,所以便可以用标题里的一部分,也就是Notepad去访问它,同样,用Untitled也可以。
同时,在写字板的“关于”窗口中,那个关闭按钮的标题是“OK”,所以便可以用OK去调用它。
讲了这么多,现在具体介绍pywinauto的安装和使用
1 安装
1.1安装python
安装pywinauto有两个要求:
1: python的版本不得高于2.6
2:使用python的32位版本
因此,建议大家去python官网下载其32位的python2.6并进行安装。
1.2安装依赖库
Pywinauto有两个依赖库,即
SendKeys-ctypes
SendKeys
可以去其对应网站下载、安装,也可以从本文的附件中下载,稍后会加上该附件。
说明,以上两个库以下pywinauto都有setup.py程序,用户可以在DOS命令下,运行python setup.py install进行安装,安装成功后,这些库会出现在python的安装目录的Lib\site-packages下。
1.3 安装pywinauto
只要python符合安装要求(前面说的32位,低于2.7),且安装依赖库,pywinauto的安装非常容易,此处略过。
2 python的开发环境(可选)
我使用Eclipse+PyDev插件进行python的开发。
具体的配置方法是
1: 下载PyDev
2: 解压,将解压后的两个文件夹features、plugins拷贝到Eclipse的dropins目录下
3:启动Eclipse,点击菜单windows->Preferences,弹出的窗口左侧应该出现PyDev节点
4:点击PyDev下的Interpreter-Python,点击New按钮,找到Python.exe的安装路径,然后点击两次确定按钮即可。
5:此时可以新建Python工程、模块,可以在Eclipse进行Python的开发和调试。
3 Pywinauto使用
3.1 关联到一个应用,用以下方法:
app = Application() app.start_(“notepad.exe”) app.connect_(path = r"c:\windows\system32\notepad.exe") app.connect_(process = 2341) app.connect_(handle = 0x010f0c)
3.2 调用一个窗体
当初始化app后,可以通过模糊匹配的方式操作该app中的一个窗体,变量名可以是该窗体标题的部分或全部
dlg = app.window_(title_re = ".*Part of Title.*") dlg = app.PartOfTitle
例如,对一个写字板app应用中的窗口,在英文操作系统中,其标题是“untitled - Notepad”
可以使用以下两种方式调用该窗体
app.Untitled app.Notepad
对于关于窗口,其标题是“About Notepad”
可以使用以下名称调用该窗体
Pywinauto使用以下顺序定位一个控件
1: 控件的标题,即title
2:控件的类名,即friendly class
3:控件的标题加类名,即title + friendly class
对于“关于”窗口的中按钮,可以使用以下任意一种方式调用
3.4 控件的基本操作
如下:
Ctrl: ^
Alt: %
Shift: +
以下是其常见属性的读取:
http://pywinauto.googlecode.com/hg/pywinauto/docs/controls_overview.html
在该网页里,最上方是所有控件的基本操作和属性读取,下面依次是每个控件独有的操作,在实际的编程中,如果想知道某个控件的某个操作,可以通过文档查询。
4 其它说明
4.1 和PyUnit集成
只要代码书写符合PyUnit的要求,可以很容易的让pywinauto所测试的win32应用和PyUnit集成。
4.2 和Selenium集成
Selenium支持Python语言,因此,很容易让pywinauto与selenium。
在一些测试场景中,需要运行完某个win32应用后,立刻在web应用程序中查看结果,也就是说,一个测试同时要面对win32和web两种应用,可以用python+pywinauto+selenium组合的方式实现。
4.3 代码结构
有兴趣的网友,还可以阅读其源代码,主要的几个程序是
相关文章推荐
- 用pywinauto进行win32应用程序的测试
- 用pywinauto进行win32应用程序的测试
- 用pywinauto进行win32应用程序的测试
- 用pywinauto进行win32应用程序的测试
- 转 《pywinauto进行win32应用程序的测试》
- [引]ASP.NET 移动网页 与 如何:使用仿真程序和浏览器在部署移动 Web 应用程序之前对其进行测试
- 分层 Selenium 框架进行复杂 Web 应用程序自动化测试
- 【腾讯TMQ】win32应用程序性能测试-内存篇
- 对 Windows DNA 应用程序中的数据访问组件进行压力测试
- Android中使用Monkey进行UI或应用程序测试
- 通过扩展 Rational Functional Tester 对 Adobe Flex 或 Flash 应用程序进行测试
- mysql主键设置成auto_increment时,进行并发性能测试出现主键重复Duplicate entry 'xxx' for key 'PRIMARY'
- 使用免费工具WCAT为Web应用程序进行压力测试
- Twitter的照片滤镜功能可能已经上线,内部员工正在对IOS和Android平台应用程序上进行测试
- 用python进行应用程序自动化测试(uiautomation)
- 用python进行应用程序自动化测试(uiautomation)
- 基于JMeter对J2EE应用程序进行性能测试
- 运用D.O.H进行Javascript应用程序测试(一)
- [引]ASP.NET 移动网页 与 如何:使用仿真程序和浏览器在部署移动 Web 应用程序之前对其进行测试
- 使用Jmeter对应用程序进行测试