1. 前言
本次更新爲Airtest庫更新,版本提升至1.2.9,主要新增 對Android13的支持 、新增Windows和iOS的錄屏接口 等。
2. 更新功能
1)新增對Android13的支持
Airtest1.2.9版本新增了對Android13設備的支持,有該系統設備連接/自動化需求的同學,請務必把使用的Airtest剛更新至1.2.9版本。
2)新增Windows、iOS錄屏接口,優化Android錄屏
目前錄屏功能不僅支持Android設備,還支持了windows、iOS設備!
函數 start_recording()
的參數修改如下:
max_time
: 錄屏最長時間限制,默認爲1800,單位是秒output
: 錄像保存文件地址, 默認爲None
,將會自動保存在log目錄下,自動以當前時間命名
特別注意:原先 output
參數在 stop_recording
中,現在改爲在 start_recording
裏!
fps=10
:輸出視頻的幀率,目前暫時限定不超過10fps,默認爲10(僅對ffmpeg和cv2生效)mode="ffmpeg"
: 保存視頻的後臺,可選 'ffmpeg' 'cv2' 'yosemite',三種模式的區別如下:
ffmpeg :對機型兼容較好,但cpu佔用較高,第一次運行將會預先下載ffmpeg,有一定的額外空間佔用(幾十M)
cv2 :無需佔用額外空間,生成的視頻體積比ffmpeg更大
yosemite :Android舊版本的錄屏方案,假如當前設備是Android,默認會使用這個模式錄屏,必須要事先安裝 Yosemite.apk
,並支持舊的參數,幀率比ffmpeg和cv2要高,但兼容性差,有一些手機不支持
snapshot_sleep=0.001
: 截圖間隔orientation=0
: 視頻朝向模式 1 爲豎屏;模式 2 爲橫屏;模式 0 爲方形填充,默認是0
其中大部分參數使用默認值即可,最重要的參數有兩個:
① 新增參數 orientation
:
當跑測過程中大部分時間是豎屏時,可以考慮將 orientation=1
,或 orientation="portrait"
;
② 當跑測過程中大部分是橫屏,可以 orientation=2
,或 orientation="lanscape"
,適合遊戲等橫屏應用;
③ 橫豎屏都有可能的話,可以不指定參數,默認值爲0,會用一個正方形來容納視頻內容,方便橫豎屏轉換
④ output=xxx.mp4
,默認將錄屏文件存放在log目錄下,如果有重命名需求的話可以傳這個參數,否則直接所有參數用默認值即可
錄屏代碼示例:
Record 30 seconds of video and export to the current directory test.mp4:
>>> from airtest.core.api import connect_device, sleep
>>> dev = connect_device("Android:///")
>>> save_path = dev.start_recording(output="test.mp4")
>>> sleep(30)
>>> dev.stop_recording()
>>> print(save_path)
>>> # the screen is portrait
>>> portrait_mp4 = dev.start_recording(output="portrait.mp4", orientation=1) # or orientation="portrait"
>>> sleep(30)
>>> dev.stop_recording()
>>> # the screen is landscape
>>> landscape_mp4 = dev.start_recording(output="landscape.mp4", orientation=2) # or orientation="landscape"
3)IOS支持傳入udid參數
iOS的初始化字符串中,支持傳入名爲 serialno/udid/uuid
的字段,用於設置這臺iOS的設備udid,示例:
>>> connect_device("iOS:///http://localhost:8100/?mjpeg_port=9100&&udid=00008020-001270842E88002E") # iOS with mjpeg port and udid
>>> connect_device("iOS:///http://localhost:8100/?mjpeg_port=9100&&uuid=00008020-001270842E88002E") # udid/uuid/serialno are all ok
該名稱無論使用 udid/uuid/serialno
中任何一個名字傳入都可以生效,可以在連接後,通過以下方式獲取到這個值:
dev = connect_device("iOS:///http://localhost:8100/?udid=00008020-001270842E88002E")
print(dev.uuid)
增加這個參數的主要原因是,在wda中獲取不到ios手機的udid,但在某些情況下可能需要用到這個值,因此支持主動傳入保存。
3. 問題修復
1)修復了部分windows下,遊戲無法正確截屏的問題
迭代了windows的 snapshot
,修復了部分遊戲截屏圖像重複、黑屏等問題,同時修復了在雙屏下的截圖區域錯誤問題。
2)修改了報告中對於運行結果是否成功的判定
原先的邏輯是:只要整個運行過程中出現 traceback
,就認爲此次任務運行失敗。
【圖】1.2.7版本Airtest跑測結果示意
但通常會遇到一種情況是:在運行過程中會出現一些不太重要的腳本異常,我們希望腳本不卡在這裏,而是 catch
住異常後繼續往下跑,只要能跑到最後就算腳本成功。
【圖】1.2.9版本Airtest跑測結果示意
因此將腳本的成功判斷改爲:當步驟列表的最後一個步驟有traceback,才認爲本次腳本運行失敗。
3)對報告中一些顯示效果做了一點微調
① 做了一些樣式調整,修復了一些顯示問題;
② 報告html支持上下左右按鍵切換預覽圖片。
4. 如何更新
因本次更新僅更新了Airtest庫,所以同學們目前只能在自己本地python環境中,將Airtest更新到最新版本:
pip install -U airtest
對於使用AirtestIDE的同學,可以等我們發佈1.2.15版本的IDE,或者在舊版本AirtestIDE中設置使用本地python環境,然後將本地python環境的Airtest庫升級到最新版本即可。
5. 其它問題
如同學們在使用新版的Airtest時遇到了一些問題無法解決,特別是錄屏相關的問題,可以通過此網站向我們的開發者快速提單:https://airtest.netease.com/issue_create 。
Airtest官網:https://airtest.netease.com/
Airtest教程官網:https://airtest.doc.io.netease.com/
搭建企業私有云服務:https://airlab.163.com/b2b
官方答疑 Q 羣:117973773
呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~
可以在標題中加入“Airtest1.2.9”之類的字眼,方便我們快速篩選和排查。