【更新公告】Airtest更新至1.2.9版本

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”之類的字眼,方便我們快速篩選和排查。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章