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種錄屏模式,yosemite
和ffmpeg
,默認情況下,都是使用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
呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~