Airtest之纯python脚本测试Windows软件UU加速器
1. 前言
1)
2)
之前几期内容,我们出过纯py
形式的Android自动化脚本。同学们一直让再出一下纯py
形式的Windows脚本,今天我们以UU加速器为例,给大家出一个简单的学习demo。
2. UU加速器的自动化demo
今天的练习demo也非常简单,大致内容是:
-
确保先关闭UU加速器的进程
-
打开UU加速器
-
获取UU加速器的句柄,并连接上
-
给UU加速器做一些简单的测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | # -*- encoding=utf8 -*- __author__ = "AirtestProject" from airtest.core.api import * from airtest_ocr.api import * import os import win32api,win32con import win32gui def close_app(): try : os.system( "taskkill /f /im uu.exe" ) except : pass def open_app(): os.startfile(r "D:\Netease\UU\uu.exe" ) sleep( 3 ) hwnd_title = {} def get_all_hwnd(hwnd, mouse): #获得当前所有窗口句柄 if (win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd)): hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)}) win32gui.EnumWindows(get_all_hwnd, 0 ) #获取uu加速器的窗口句柄 for h, t in hwnd_title.items(): if t = = "UU加速器" : uu_handle = h win = connect_device( "windows:///{handle}" . format (handle = uu_handle)) #连接窗口 sleep( 3 ) def UU_test(): touch(Template(r "tpl1672282498716.png" , record_pos = ( 0.132 , 0.388 ), resolution = ( 791 , 688 ))) touch(Template(r "tpl1671784347112.png" , record_pos = ( 0.273 , - 0.296 ), resolution = ( 1000 , 688 ))) sleep( 1 ) text( "绝地求生" ) sleep( 1 ) touch(Template(r "tpl1672283419545.png" , record_pos = ( 0.264 , 0.064 ), resolution = ( 1000 , 688 ))) assert_exists(Template(r "tpl1671784672194.png" , record_pos = ( - 0.124 , - 0.046 ), resolution = ( 989 , 688 )), "找到结果" ) double_click(Template(r "tpl1671785263585.png" , record_pos = ( 0.317 , - 0.307 ), resolution = ( 967 , 688 ))) keyevent( "^a" ) #全选 sleep( 1.0 ) keyevent( "^c" ) #复制 sleep( 1.0 ) keyevent( "{BACK}" ) #删除 sleep( 1.0 ) keyevent( "^v" ) #粘贴 sleep( 1.0 ) close_app() open_app() UU_test() |
3. 小结
1)os.system
system
函数可以将字符串转化成命令在我们的机器上运行,就像我们写的终止UU加速器的进程那样:
os.system("taskkill /f /im uu.exe")
2)os.startfile
打开windows窗口:
os.startfile(r"D:\Netease\UU\uu.exe")
3)win32gui
win32gui模块,可以帮助我们做很多关于Windows窗口的事情,比如:
1 2 3 4 5 6 7 8 | # 判断活跃窗口 win32gui.IsWindow() # 获取窗口标题 win32gui.GetWindowText() # 枚举窗口 win32gui.EnumWindows |
4)连接窗口
在Airtest操作Windows窗口之前,我们必须使用连接窗口的语句,把目标窗口连接上,之后才能对它进行一系列的自动化操作:
win = connect_device("windows:///{handle}".format(handle=uu_handle))#连接窗口
当然,其实这里我们也可以不用这么复杂的方式来获取句柄,直接使用正则表达式匹配窗口title,会更加简洁好用:
win = connect_device("Windows:///?title_re=UU加速器.*")#连接窗口
转自Airtest公众号
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2019-01-08 通过批处理命令for提取数据