更新公告:Airtest更新至1.2.10.2版本

1. 前言

本次是Airtest庫更新,版本提升至1.2.10.2,內容主要是Android錄屏功能的改動。

2. 更改部分

  • 在Airtest1.2.9中提供的cv2模式已經被捨棄,因爲容易引發錯誤,效果也不如ffmpeg

  • 只有Android需要mode參數,默認爲yosemite模式;Window/iOS的start_recording 不再需要有mode參數;

  • 錄屏的ffmpeg模式增加了max_size參數,能夠指定錄屏結果的圖像大小,因爲屏幕圖片越大,在錄屏時造成的系統負載越大(CPU和內存佔用);

代碼示例:

dev = connect_device("android:///")
dev.start_recording(output="test.mp4", mode="ffmpeg", max_size=800)  
# Android 支持mode指定使用ffmpeg模式

3. 其他改動

  • 去掉了numpy 的版本號限制

  • 如果Android出現了屏幕有一半黑屏的情況,可以再次重連

4. 如何更新

1)使用本地python環境的同學

可以直接更新本地python環境的Airtest庫:

pip install -U airtest

2)使用AirtestIDE的同學

目前最新的Airtest1.2.15內置Airtest版本爲1.2.10,所以我們只能在AirtestIDE中設置使用本地python環境,之後將本地python環境的Airtest更到最新的1.2.10.2來體驗新版:

5. Android錄屏功能介紹【重點】

1.2.10.2版本的Airtest支持2種錄屏模式,yosemiteffmpeg默認情況下,都是使用yosemite錄屏模式

1)如何選擇合適的Android錄屏模式

上述兩種錄屏模式的區別如下:

  • yosemite :原有的默認模式,錄屏清晰度和質量較高,但兼容性較差,部分機型可能有問題;

    • 支持的參數:max_time, orientation, bit_rate, bit_rate_level
  • ffmpeg : 在1.2.9之後加入的新模式,錄屏幀率和質量較低,但兼容性更好,能兼容絕大多數設備;

    • 支持的參數:max_time, orientation , max_size,fps, snapshot_sleep

由此可見,如果對錄屏清晰度有要求的話,可以使用默認的錄屏模式 yosemite (前提是設備能使用這種錄屏方式),不用額外指定錄屏模式的參數;

如果對錄屏清晰度沒有很高要求的話,可以指定錄屏模式爲 ffmpeg

dev = connect_device("Android:///")
dev.start_recording(mode="ffmpeg",output="test.mp4")
pass
dev.stop_recording()

2)重要參數:指定錄屏時長 max_time

2種錄屏模式均有一個默認的錄屏時長:1800s,也就是半小時;用戶可以自由修改這個默認的錄屏時長:

dev = connect_device("Android:///")
dev.start_recording(max_time="10",output="test.mp4")
sleep(11)

示例沒有結束錄屏的腳本,則會按照啓動錄屏時的 max_time 時長去錄屏,也就是錄屏10s後就自動結束錄屏了。

但是這裏有一點比較特別:如果這種情況下,使用yosemite錄屏模式,則錄屏文件仍會保存在手機內存裏,沒有被拉取出來(添加結束錄屏腳本可以解決);如果使用ffmpeg模式,則錄屏文件會保存在log目錄下。

所以,不論有沒有特殊指定最大錄屏時長,我們還是按照規範添加開啓錄屏和結束錄屏的腳本,避免一些問題。

3)重要參數:指定錄屏時屏幕方向 orientation

  • 當跑測過程中大部分時間是豎屏時,可以考慮將 orientation=1 ,或 orientation="portrait"

  • 當跑測過程中大部分是橫屏,可以 orientation=2 ,或 orientation="lanscape" ,適合遊戲等橫屏應用;

  • 橫豎屏都有可能的話,可以不指定參數,默認值爲0,會用一個正方形來容納視頻內容,方便橫豎屏轉換

示例詳情可以參考我們的往期推文 Airtest新增iOS、Windows錄屏功能,真香!

4)重要參數:指定錄屏的圖像大小 max_size

錄屏的ffmpeg模式有一個 max_size參數,能夠指定錄屏結果的圖像大小:

# 指定錄屏圖像大小爲800
dev = connect_device("Android:///")
dev.start_recording(mode='ffmpeg',max_time=10,output="test_800.mp4",max_size=800)
sleep(11)
# 指定錄屏圖像大小爲1080
dev = connect_device("Android:///")
dev.start_recording(mode='ffmpeg',max_time=10,output="test_1080.mp4",max_size=1080)
sleep(11)

在相同設備,相同畫面下錄屏,運行後可以知道,圖像大小爲800的清晰度比1080的差,但錄屏文件比1080的小。

由此可見,如果不介意錄屏清晰度,但是比較介意錄屏大小,可以適當調低 max_size ,節省內存。

6. 小結

今天重點介紹了Airtest1.2.10.2的改動內容,以及詳細介紹了最新的錄屏功能。

如同學們在使用新版的Airtest時遇到了一些問題無法解決,特別是錄屏相關的問題,可以通過此網站向我們的開發者快速提單:https://airtest.netease.com/issue_create

可以在標題中加入“Airtest1.2.10.2”之類的字眼,方便我們快速篩選和排查。


Airtest官網https://airtest.netease.com/
Airtest教程官網https://airtest.doc.io.netease.com/
搭建企業私有云服務https://airlab.163.com/b2b

官方答疑 Q 羣:117973773

呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~

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