UIAutomation支持多种语言,这里就通过python来调用。UIAutomation是第三方库,所以首先需要安装库pip install uiautomation。先用UIAutomation操作Windows自带计算器.
1.定位窗体
首先启动计算器,然后启动UISpy.exe,在Control View的树形结构中,找到计算器。前面已经学习了两种方式定位,二者任选。结果如图x-x所示。
图x-x UISpy定位计算器
可以看出,在UISpy中选择计算器后,计算器就会多一个红色的框,用于提示用户,当前定位的元素指向程序哪个部分。
2.定位元素
在UISpy中找到程序后,可以在其下的树形结构中找到每一个元素。比如按钮“7”,找到后,可以在Properties里看到“7”的属性,同时,计算器上的“7”周围有个红色的小框,如图x-x所示。
图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
为了答谢大家对蜗牛学院的支持,蜗牛学院将会定期对大家免费发放干货,敬请关注蜗牛学院的官方微信。