Pywinauto是基于Python开发的,用于自动化测试的脚本模块,主要操作于Windows标准图形界面。它可以允许你很容易的发送鼠标、键盘动作给Windows的对话框和控件。
其中,最主要功能为对windows标准控件的一系列动作可编程处理。包括对窗口的指定、鼠标或键盘操作、获得控件属性等等。程序的开始为对所需应用的启 动或连接。获得程序连接后,pywinauto通过窗口的名称、类名、是否可见等属性寻找匹配的窗口,进而通过类似方法寻找用户所需的控件,并获得相应的 句柄。之后,用户可通过易理解的编程方式对指定控件进行相关操作的编程,包括鼠标点击、键盘输入、判断控件间关系、获取控件属性等。
外结构:
Pywinauto是建立在CPython之上的python应用模块,实现原理由C做底层实现,因此与JPython不能兼容。
Python for windows 模块,使得windows api函数有了相应的python接口,其中的ctypes和win32api模块为api函数的对应应用封装了较为完善的接口集合。
内结构:
程序的入口及对指定窗口或控件的操作,定义在application.py中。其中Application类进行对应用的开启和连接,WindowSpecification类自动映射到指定的窗口或控件上。
HwndWrapper?.py,win32_controls.py,menuwrapper.py,common_controls.py中为 Pywinauto对标准控件操作的定义。控件都由HwndWrapper类继承而来,其中对控件共有的基本属性进行了定义。在控件自己的定义中,对 HwndWrapper类的一些属性进行了重载,同时也定义了具有自己特色的属性和操作。对控件属性值的获取和操作定义在 handleprops.py,controlsproperties.py文件中。
Win32defines.py,win32functions.py,win32structures.py文件中,为pywinauto对底层函数操 作的定义和索引。其底层调用的是python的ctypes库函数所提供的接口。Ctypes库中封装了系统所使用的C语言数据类型和windows api函数操作等模块,并提供了相应的python语言接口,使用户通过python可对系统进行操作。
case组织:
我们采用Python的unittest模块的基本结构,来组织自动化case。每一个大的功能模块,为一个类,继承与 unittest.TestCase。通过在测试类中添加函数的形式,对测试类中的每一个测试点(即case)进行代码编写。测试类中,一定要覆盖的是 setUp()和tearDown()函数,作为每一个单元测试函数的入口和出口。Unittest提供TestSuite类来集合和组织测试类中的多个 测试函数。同时,提供了TextTestRunner类来运行TestSuite里的类,并返回通过、错误、失败的测试数量以及运行时间。