18
08

UIAutomation运用

UIAutomation支持多种语言,这里就通过python来调用。UIAutomation是第三方库,所以首先需要安装库pip install uiautomation。先用UIAutomation操作Windows自带计算器.

UIAutomation支持多种语言,这里就通过python来调用。UIAutomation是第三方库,所以首先需要安装库pip install uiautomation。先用UIAutomation操作Windows自带计算器.


1.定位窗体


首先启动计算器,然后启动UISpy.exe,在Control View的树形结构中,找到计算器。前面已经学习了两种方式定位,二者任选。结果如图x-x所示。


20190527_153444_070.jpg

图x-x UISpy定位计算器


可以看出,在UISpy中选择计算器后,计算器就会多一个红色的框,用于提示用户,当前定位的元素指向程序哪个部分。


2.定位元素


在UISpy中找到程序后,可以在其下的树形结构中找到每一个元素。比如按钮“7”,找到后,可以在Properties里看到“7”的属性,同时,计算器上的“7”周围有个红色的小框,如图x-x所示。


20190527_153508_047.jpg

图x-x 定位元素和获取元素属性


对于按钮“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



为了答谢大家对蜗牛学院的支持,蜗牛学院将会定期对大家免费发放干货,敬请关注蜗牛学院的官方微信。


20190320_095757_834.jpg



版权所有,转载本站文章请注明出处:蜗牛学苑, https://www.woniuxy.cn/article/257