之前有讀者朋友說 Airtest 官方支持將自動化腳本編譯成 APK 直接運(yùn)行,照著官方提供的文檔操作了一遍,發(fā)現(xiàn)不少的坑,今天帶大家一起來填這些坑。
在開始編寫自動化腳本之前,我們首先要下載安裝 JDK,并配置 JDK 和 ADB 到環(huán)境變量中。
以刷抖音短視頻這一自動化操作為例,首先我們使用 Airtest IDE 新建一個 .air Airtest 項(xiàng)目。
和常規(guī)自動化操作類似,我們需要借助 ADB 命令拿到抖音 App 的應(yīng)用包名和初始 Activity,利用 start_app() 方法打開抖音。
package_name = 'com.ss.android.ugc.aweme'
activity_name = 'com.ss.android.ugc.aweme.splash.SplashActivity'
# 部分手機(jī)需要開啟模擬點(diǎn)擊
start_app(package_name,activity=activity_name)
接著拿到屏幕的寬、高數(shù)值,利用 swipe() 方法模擬滑動,即可以實(shí)現(xiàn)切換視頻的操作。
device_attrs = device()
print(device_attrs.uuid)
# 獲取設(shè)備的高度和寬度
width, height = device_attrs.get_current_resolution()
print(width)
print(height)
# 開始刷抖音
while True:
# 滑動一次
swipe( (width * 0.5, height*3/ 4),(width * 0.5, height / 4),duration=1)
sleep(2)
上面這段代碼直接在 IDE 運(yùn)行,自動化操作能正常運(yùn)行。
下一步,利用 Firebase 打包腳本,依次點(diǎn)擊:Firebase - 打包多個腳本 - 選擇目標(biāo)腳本,等待本地生成一個 apk 文件。
使用 adb 命令將 apk 安裝到手機(jī)上,接著通過 instrument 開啟自動化操作。
# 開啟自動化任務(wù)
adb shell am instrument -w com.netease.open.airbase/android.support.test.runner.AndroidJUnitRunner
坑一:運(yùn)行之后很快就報(bào)錯了,報(bào) device() 方法在 kivy 中沒有實(shí)現(xiàn)。
官方文檔提到的原生應(yīng)用的 poco 沒法使用,包含 device() 在內(nèi)的很多方法,雖然屬于 airtest 內(nèi)部的方法,但是打包成 apk 識別不到。
我們可以將寬度和高度寫死,然后再進(jìn)行滑動操作。
width = 1080height = 2160swipe( (width * 0.5, height*1/ 4),(width * 0.5, height*3 / 4),duration=0.5)
坑二:向上滑動事件處理不當(dāng)。
測試多臺設(shè)備后發(fā)現(xiàn),腳本代碼生成的 apk 在不同設(shè)備上運(yùn)行結(jié)果不一致。
僅上面的向上滑動這一步操作,有些手機(jī)當(dāng)做 長按屏幕 來消費(fèi),還有一些手機(jī)當(dāng)做 下拉刷新 來處理。
建議先在 Airtest IDE 中運(yùn)行,保證腳本的正確性的前提下,再去替換改寫不被 apk 識別的部分。
總之,利用 Firebase 打包自動化腳本成 apk 單獨(dú)運(yùn)行還不是很穩(wěn)定,另外一起打包內(nèi)置的 kivy 庫還需要兼容和完善,期待官方下一版本。
本文首發(fā)于微信公眾號 「 AirPython 」,本篇所有的源碼我已經(jīng)上傳到公眾號后臺,關(guān)注公眾號后回復(fù)關(guān)鍵字:「 dbapk 」獲取完整代碼。
如果你覺得文章還不錯,請大家點(diǎn)個好看或者分享出去,你的肯定是我最大的鼓勵和支持。
推薦閱讀