此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途
之前几期内容,我们出过纯py
形式的 Android 自动化脚本。同学们一直让再出一下纯py
形式的 Windows 脚本,今天我们以 UU 加速器为例,给大家出一个简单的学习 demo。
今天的练习 demo 也非常简单,大致内容是:
# -*- 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()
os.system
system
函数可以将字符串转化成命令在我们的机器上运行,就像我们写的终止 UU 加速器的进程那样:
os.system("taskkill /f /im uu.exe")
os.startfile
打开 windows 窗口:
os.startfile(r"D:\Netease\UU\uu.exe")
win32gui 模块,可以帮助我们做很多关于 Windows 窗口的事情,比如:
# 判断活跃窗口
win32gui.IsWindow()
# 获取窗口标题
win32gui.GetWindowText()
# 枚举窗口
win32gui.EnumWindows
......
在 Airtest 操作 Windows 窗口之前,我们必须使用连接窗口的语句,把目标窗口连接上,之后才能对它进行一系列的自动化操作:
win = connect_device("windows:///{handle}".format(handle=uu_handle))#连接窗口
当然,其实这里我们也可以不用这么复杂的方式来获取句柄,直接使用正则表达式匹配窗口 title,会更加简洁好用:
win = connect_device("Windows:///?title_re=UU加速器.*")#连接窗口
那今天的练习就到这里啦,希望同学们多多关注我们!
Airtest 官网:https://airtest.netease.com/
Airtest 教程官网:https://airtest.doc.io.netease.com/
搭建企业私有云服务:https://airlab.163.com/b2b
官方答疑 Q 群:117973773
呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~