airtest常用命令及實戰


airtest

安裝

官網地址Airtest Project (netease.com)

啟動程序連接手機

你可以使用賬號登錄或直接點擊左下角“skip”按鈕跳過。

啟動Android模擬器或者用PC連接一台手機。通過adb命令檢查移動設備。

> adb devices
List of devices attached
46HDU18C27004111        device

常用命令

touch

touch(Template(r"tpl1627996328848.png", record_pos=(-0.339, 0.003), resolution=(1080, 2310)))
IDE默認生成的代碼,按照圖片查找
默認times=1表示點擊一次,需要多次點擊修改添加times,跟上次數就行

touch([10,10])
根據位置去點擊

touch命令如果沒有匹配到圖片會報錯,需要進行異常處理,否則程序會終止

swipe

用法比較多,具體可以參考文章swipe滑動

常用的兩種用法

swipe((672,1214),(336,1305),duration=0.3)
從一個坐標滑動到另一個坐標,可以是元祖,也可以是數組
duration為滑動所花的時間,根據實際情況盡量真實就行

swipe(Template(r"tpl1628053242231.png", record_pos=(0.011, -0.172), resolution=(1080, 2310)), vector=[0.2684, 0.0025])

r"tpl1628053242231.png"為獲取的圖像的中心點X,Y坐標
vector 滑動的屏占百分比,向右為X軸正向, 向下為Y軸正向

exists

好東西,使用比較多

exists(Template(r"tpl1628003095865.png", record_pos=(0.014, 0.048), resolution=(1080, 2310)))
# 檢測圖片存在不存在,不存在返回None,存在則默認返回中心X,Y坐標

# 比如先檢查下存在不存在,再去拿到坐標去點擊,還可以根據實際情況,修改坐標的相對位置
ad_p = exists(Template(r"tpl1628003095865.png", record_pos=(0.014, 0.048), resolution=(1080, 2310)))
if ad_p:
    touch([866,ad_p[-1]])
    sleep(4.0)

assert_exists

與exists類似,assert找不到會執行AssertionError

在查找的過程中exists如果找不到,只會執行兩次查找

assert_exists,如果沒找到,會執行多次重新查找匹配的過程

sleep

和time.sleep功能一樣,程序暫停運行時間

sleep(15.0)
暫停15秒

keyevent

不通過觸摸手機來觸發手機的按鍵事件

keyevent("BACK")
返回
keyevent("HOME")
返回主頁
keyevent("POWER")
按下手機電源鍵

建議

學習python語言基礎,airtestIDE中支持,python標准庫直接使用,和python語法

代碼參考

抖音極速版自動刷任務廣告,及首頁廣告

# -*- encoding=utf8 -*-
__author__ = "admin"

from airtest.core.api import *
import random

# 定義要用的常量參數
# 寶箱位置
box_position = [920,2017]

# from poco.drivers.android.uiautomation import AndroidUiautomationPoco
# poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
# 主頁視頻上滑
def ad_up():
    swipe([540,1800],[540,500],duration=0.3)
    sleep(0.5)

# 上滑    
def up():
    swipe([540,1300],[540,500],duration=0.3)
    sleep(0.5)
    
# 下滑    
def down():
    swipe([540,500],[540,1300],duration=0.3)
    sleep(0.5)
    
# 關閉廣告,再打開一個,再關閉
def close_ad():
    keyevent("BACK")
    sleep(3.0)
    # 獲取繼續看廣告坐標,沒有就關閉
    ad_p = exists(Template(r"tpl1628018577239.png", record_pos=(0.008, 0.019), resolution=(1080, 2310)))

    if ad_p:
        touch([ad_p[0],ad_p[1]+200])
        sleep(38.0)
        keyevent("BACK")
        
# 主頁廣告瀏覽
def first_ad():
    for i in range(10):
        ad_up()
        sleep(random.randint(10,30))
    if exists(Template(r"tpl1627998671215.png", record_pos=(0.001, 0.867), resolution=(1080, 2310))):
        touch(Template(r"tpl1627998671215.png", record_pos=(-0.001, 0.872), resolution=(1080, 2310)))

# 看廣告賺金幣
def look_ad():
    down()
    down()
    down()
    up()
    ad_p = exists(Template(r"tpl1628003095865.png", record_pos=(0.014, 0.048), resolution=(1080, 2310)))
    if ad_p:
        touch([866,ad_p[-1]])
        sleep(4.0)
        if exists(Template(r"tpl1628003095865.png", record_pos=(0.014, 0.048), resolution=(1080, 2310))):
            return False
        sleep(38.0)
        close_ad()
        return True
    else:
        return False

# 開寶箱得金幣
def box_ad():
    touch(box_position)
    sleep(5.0)
    if exists(Template(r"tpl1628010958896.png", record_pos=(-0.101, 0.108), resolution=(1080, 2310))):
        touch(Template(r"tpl1628002008078.png", record_pos=(-0.101, 0.109), resolution=(1080, 2310)))
        sleep(38.0)
        close_ad()
        return True
    else:
        return False

# 檢測異常,重新走程序
def is_error():
    # 正常繼續
    if exists(Template(r"tpl1628003095865.png", record_pos=(0.014, 0.048), resolution=(1080, 2310))):
        return True
    # 異常關閉到主界面
    else:
        for i in range(6):
            keyevent("BACK")
            sleep(1.0)
        return False
    
def make_money():
    # 打開抖音app,打開來賺錢界面
    start_app("com.ss.android.ugc.aweme.lite")
    sleep(2.0)
    touch(Template(r"tpl1627998671215.png", record_pos=(-0.001, 0.872), resolution=(1080, 2310)))
    sleep(2.0)

def run():
    make_money()
    n = 40
    normal = True
    while n > 0:
        if look_ad():
            n -= 1
            if not exists(Template(r"tpl1628003095865.png", record_pos=(0.014, 0.048), resolution=(1080, 2310))):
                keyevent("BACK")
        if box_ad():
            n -= 1
            if not exists(Template(r"tpl1628003095865.png", record_pos=(0.014, 0.048), resolution=(1080, 2310))):
                keyevent("BACK")
        sleep(2.0)
        # 3次做一次異常檢測重新開啟程序
        if n%3 == 0:
            normal = is_error()
        if normal:
            keyevent("BACK")
            first_ad()
        else:
            make_money()
            normal = True
            
if __name__ == '__main__':
    # script content
    print("start...")
    run()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM