1. 前言
之前幾期內容,我們出過純py
形式的Android自動化腳本。同學們一直讓再出一下純py
形式的Windows腳本,今天我們以UU加速器爲例,給大家出一個簡單的學習demo。
2. UU加速器的自動化demo
今天的練習demo也非常簡單,大致內容是:
- 確保先關閉UU加速器的進程
- 打開UU加速器
- 獲取UU加速器的句柄,並連接上
- 給UU加速器做一些簡單的測試
# -*- 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窗口的事情,比如:
# 判斷活躍窗口
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官網:https://airtest.netease.com/
Airtest教程官網:https://airtest.doc.io.netease.com/
搭建企業私有云服務:https://airlab.163.com/b2b
官方答疑 Q 羣:117973773
呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~