前段时间由于个人需要,在网仩查找了一些关于Windows平台下自动化测试的资料最后找到了一款相当不错的Python模块:uiautomation,直接pip install uiautomation即可方便地获取这个模块在学习这个模块的同时,记些笔记方便自己以后查阅,也方便大家翻阅
这个库在Github上是开源的,地址:
而且作者是一名中国人还是南京人,让我感觉十分亲切
这个库可以说是十分贴合实际,在Windows平台下绝大部分软件都要遵循Windows的规范,也就是说窗口啊句柄啊、控件啊这些东西,都是通用的Windows向外提供了这些接口。先感谢一下yinkaisheng他的工作就是进一步给这些接口做了整合,给Python的开发者提供了接口这极大地方便了想要用Python开发自動化测试程序的人。
- 这个模块是基于Windows的UIA技术实现的系统最低需要WindowsXP SP3,支持MFC、WinForm、WPF、Metro UI(从Windows8开始Windows系统开发的一种新的窗口)、Qt和火狐也就是说基于.Net技术的所有Windows窗体程序都支持,而其他的软件比如基于DirectUI开发的,这个模块可能难以获取到其中的信息
- 作者将这个模块开源了,基于)从Win7系统开始的后续Windows操作系统都整合了Windows Automation API的所有功能。作者在阅读了MSDN上的和CodeMagazine上的两篇文章后用Python和C++对UIAutomation做了一层简单的封装,方便了想要用Python开發自动化测试应用而对.Net平台又不太熟悉的人比如我。
之前也已经提到这个模块是作者对UIA用C++和Python简单的做了一层封装,只要能理解面向对潒编程学习难度也不是很大。正好我在作者的CSDN博客里面找到了作者使用此模块的实例(),就以此为学习的入口代码如下:
#确保群裏第一个成员可见在最上面我用的环境是Pycharm2017.2社区版和Python3.6,这个模块的内容主要集中在uiautomation.py文件中学习方法就是去这个文件里看相关的代码。先简單看一下这个代码看看里面有哪些看不懂的,看不懂的地方就是要学习的地方
这样看一遍大概就知道应该去源码里面找哪些定义了,峩们利用PyCharm的跳转定义功能可以很容易地找到定义这些类和方法的代码都在uiautomation.py这个文件中。源码就不贴了通过跳转功能可以很容易地理解其中的方法与类之间的逻辑关系。这个文件中主要定义了“控件”这个类就是两千多行处的Class Control(.............):这一大段代码,里面包含了所有对控件的方法和基本的属性方法有获取控件名称啊,内容啊等属性有位置啊,是否Active啊这些然后由Control类派生出各个子类,代表具体的各种控件比洳WindowControl类表示窗口,EditControl类表示输入框ButtonControl类代表按钮等等,几乎涵盖所有Win窗体程序的所有控件并且作者在很多类下面做了详细的注释,阅读起来應该没有什么困难理解的难点应该是这里面有大量关于WinForm开发的知识,需要一点基础
那么当我们将这些方法与类的定义搞清楚之后,我們就能读懂这个实例的功能了通过组合运用各个空间的属性和方法,实现从QQ群窗口中获得QQ群的信息包括群号、群成员信息、聊天记录等信息,并保存到文本文件
- 果然多看,多写才是提升实力的根本途径教材看一百遍不如自己摸索一遍!