实 验 简 介
前面已经学习的自动化测试框架,除SikuliX之外都只能对B/S架构的系统进行自动化 测试,而Windows平台下的C/S架构用SikuliX来做自动化,可靠性、可维护性比较差。
项目代码中还要夹杂着大量的图片,对于整个项目来说,庞大的数据量里90%都是图片,对于编码者和使用者都会造成困扰,那么Windows平台的自动化测试框架就有了学习和使用的价值了。
目前Windows平台下自动化工具有:Windows API, MSAA - Microsoft Active Accessibility, UIAutomation
Windows API 通过FindWindow和EnumWindows来查找到窗口句柄,然后再调用其它 API(GetWindowText,GetWindowRect, GetWindowLong…)来获取窗口属性,以此来找到想要的控件(窗口),AutoIt工具就是Windows API的技术体现。
MSAA 提供一套接口,让开发人员可以方便的给残疾人开发可以使用的软件,比如读屏程序(鼠标移动到按钮的时候,可以发出声音,辅助视力障碍的人操作电脑),从而实现微软将电脑普及到每一个家庭的梦想。
它本身设计不是为了测试,但它提供一套接口,可以通过调用接口来达到测试的目的,也是目前主流Windows平台测试的基础,通过对其再次封装实现对系统软件的调用和测试。
UIAutomation是微软在MSAA的基础上,对MSAA进行封装,重新设计并实现了 UIAutomation的类库(.Net),微软根据自动化测试的需求,重新实现了一套自动化体系。
实 验 目 的
(1).熟练应用UIAutomation完成针对Windows应用程序的自动化测试。
(2).能够在实际测试项目中综合运用Web和Windows应用自动化测试技术完成复杂的测试操作。
实 验 流 程
UIAutomation运用
UIAutomation支持多种语言,这里就通过python来调用。UIAutomation是第三方库,所以首先需要安装库pip install uiautomation。先用UIAutomation操作Windows自带计算器.
1.定位窗体
首先启动计算器,然后启动UISpy.exe,在Control View的树形结构中,找到计算器。前面已经学习了两种方式定位,二者任选。结果如图所示。
可以看出,在UISpy中选择计算器后,计算器就会多一个红色的框,用于提示用户,当前定位的元素指向程序哪个部分。
2.定位元素
在UISpy中找到程序后,可以在其下的树形结构中找到每一个元素。比如按钮“7”,找到后,可以在Properties里看到“7”的属性,同时,计算器上的“7”周围有个红色的小框,如图所示。
对于按钮“7”重要的属性已经显示在Properties中,ClassName:‘Button’,AutomationId:
‘137’,Name:’7’等,都是后面代码可能会用到的
3.编码实现
通过UISpy对需要的窗体的元素定位获取属性后,可以通过python代码实现程序自动化。代码如下:
import subprocess import uiautomation import time #打开计算器程序 subprocess.Popen('calc.exe') time.sleep(2) #通过UIAutomation定位窗体 calcwindow = uiautomation.WindowControl(searchDepth=1, Name='计算器') #在最上层显示 calcwindow.SetTopmost(True) #点击数字“7” calcwindow.ButtonControl(Name='7').Click() #点击加号 calcwindow.ButtonControl(Name='加').Click() #点击数字“5” calcwindow.ButtonControl(Name='5').Click() #点击等号 calcwindow.ButtonControl(Name='等于').Click() #获取数据显示框的内容 result = calcwindow.TextControl(AutomationId="158") print(result.Name) #做验证 if result.Name.split(' ')[0] == '12': print("测试成功.") else: print("测试失败.") time.sleep(2) #关闭窗体 calcwindow.Close() |
由于本章技术内容较多,所以分为三部分来分享,接下来会陆续分享UIAutomation API、UIAutomation使用中的问题等内容。