更多内容,可以微信搜索[公][众][号]【郑大钱呀
】,关注我们,一起学技术!
基于windows的ui自动化框架
前言
由于测试工作的需要,对于某些场景,总是需要进行一些重复的操作,比如测试一个股票交易下单的功能,需要覆盖不同的种类代码(主板、创业板、科创板、场内基金等),这个时候使用人工的方式去测试,枯燥乏味,且效率不高,所以就想寻求一种解决方案,通过UI自动化的方式来完成重复工作。目前支持Windows平台的UI自动化工具或框架有很多,比如:Autoit、pywinauto、UIautomation、airtest 等等,这里我们使用由国人yinkaisheng
开发的UIautomation框架来实现。
UIautomation框架介绍
uiautomation是yinkaisheng
业余时间开发的供其自己使用的一个模块,uiautomation封装了微软UIAutomation API,支持自动化Win32,MFC,WPF,Modern UI(Metro UI), Qt, IE, Firefox等UI框架,最新版uiautomation2.0目前只支持Python 3版本,依赖comtypes和typing这两个包,但不要使用3.7.6和3.8.1这两个版本,comtypes在这两个版本中不能正常工作。
uiautomation支持在Windows XP SP3或更高版本的Windows桌面系统上运行。如果是Windows XP系统,请确保系统目录有这个文件:UIAutomationCore.dll。如果没有,需要安装补丁 KB971513 才能支持UIAutomtion.在Windows 7或更高版本Windows系统上使用uiautomation时,要以管理员权限
运行Python,否则uiautomation运行时很多函数可能会执行失败或抛出异常。或者先以管理员权限运行cmd.exe,在cmd中再调用Python。
小试牛刀
工具好不好,先来试一下,先感受一下,这里我们以电脑中自带的计算器为例,简单的感受一下,实现一系列的计算,演示的步骤如下:
- 通过Win+R,打开运行窗口
- 输入
calc
,打开计算器程序 - 计算55*134
- 关闭计算器程序
- 结束
演示视频如下
UIautomation自动化代码演示
演示代码如下
from time import sleep
import uiautomation as auto
class Calc():
def open_calc(self):
#打开计算器
desktop=auto.PaneControl(Name='任务栏')
#点击任务栏
desktop.Click()
#Win+D ,显示桌面
desktop.SendKeys('{Win}d')
#Win+R ,打开运行界面,并输入calc,打开浏览器
desktop.SendKeys('{Win}r')
run_win = auto.WindowControl(Name='运行')
run_win_edit=run_win.EditControl(ClassName='Edit',Name='打开(O):')
run_win_edit.SendKeys("calc")
run_win_ok=run_win.ButtonControl(ClassName="Button",Name='确定')
run_win_ok.Click()
sleep(3)
def calc_auto(self):
calc_win=auto.WindowControl(ClassName='ApplicationFrameWindow',Name="计算器")
# 开始计算
calc_five=calc_win.ButtonControl(Name='五')
calc_five.Click()
calc_five.Click()
calc_mult=calc_win.ButtonControl(Name='乘以')
calc_mult.Click()
calc_one = calc_win.ButtonControl(Name='一')
calc_one.Click()
calc_three = calc_win.ButtonControl(Name='三')
calc_three.Click()
calc_four = calc_win.ButtonControl(Name='四')
calc_four.Click()
calc_equal= calc_win.ButtonControl(Name="等于")
calc_equal.Click()
sleep(3)
calc_win_close_btn = calc_win.ButtonControl(AutomationId='Close')
calc_win_close_btn.Click()
if __name__ == '__main__':
calc = Calc()
calc.open_calc()
calc.calc_auto()
UIautomation环境搭建
本文的使用的是Python 3.9的版本,Python的安装和配置不是本文的内容,故不描述,可以参考网上其他教程,Python安装完成后,使用pip install uiautomation
来安装uiautomation框架,如下所示:
C:\Users\Administrator>pip install uiautomation
Collecting uiautomation
Downloading uiautomation-2.0.15-py3-none-any.whl (159 kB)
|████████████████████████████████| 159 kB 5.8 kB