錄屏方法剖析,記錄指令碼跑測不再難

fishfish-yu發表於2024-08-09

此文章來源於專案官方公眾號:“AirtestProject”\
版權宣告:允許轉載,但轉載必須保留原連結;請勿用作商業或者非法用途

一、前言

很多同學在跑測過程中都希望可以不用一直盯著跑測畫面,又希望可以在跑測後複核跑測結果,那麼 Airtest 所提供的錄屏方法會是很好的選擇。目前該錄屏方法已經相容了 Android、iOS、Windows 上的指令碼跑測錄製,本週就讓我們來看一下這個方法的魔力吧。

二、錄屏操作

2.1 指令碼錄屏方式

使用指令碼錄屏方式是我們最常用的,最重要的是使用下面兩個函式。

#開始錄製
start_recording(max_time, output, fps, mode, snapshot_sleep, orientation, bit_rate_level, bit_rate, max_size)

#結束錄製
stop_recording(output=None, is_interrupted=None)

其中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 ,並支援舊的引數,幀率比ffmpegcv2要高,但相容性差,有一些手機不支援

  • snapshot_sleep=0.001 : 截圖間隔
  • orientation=0 :影片朝向模式 1 為豎屏;模式 2 為橫屏;模式 0 為方形填充,預設是 0
  • bit_rate_level :調整錄屏的清晰度,取值範圍是 1-5,bit_rate_level=5清晰度最高,但是佔用的硬碟空間也會更大。(只支援Yosemite模式錄屏)
  • bit_rate :bitrate 越高, 影片的清晰度更高(只支援 Yosemite 模式錄屏)
  • max_size :能夠指定錄屏結果的影像大小,因為螢幕圖片越大,在錄屏時造成的系統負載越大(CPU 和記憶體佔用)(只支援ffmpeg模式錄屏)

大家也知道,就是從 Airtest 1.2.9 版本之後,我們的錄屏方法升級了全面相容了 Windows、Android、iOS 裝置,其中只有 Android 需要mode引數,預設為yosemite模式;Window/iOSstart_recording不再需要有mode引數;

對於Android 的錄屏模式,我們可以按需去選擇自己所需要的模式:

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

    • 支援的引數:max_time, orientation, bit_rate, bit_rate_level
  • ffmpeg : 在 Airtest 1.2.9 版本之後加入的新模式,錄屏幀率和質量較低,但相容性更好,能相容絕大多數裝置;

    • 支援的引數:max_time, orientation , max_size,fps, snapshot_sleep

2.2 命令列錄屏方式

如果是對 Android 手機使用命令列在執行指令碼的時候,開啟對螢幕的錄製,可以在執行指令碼的命令列中加入--recording引數即可:

airtest run "D:\test\Airtest_example.air"  --device android:/// --log logs/ --recording

執行結束後,錄屏檔案會預設儲存在log 檔案夾裡面,並且預設使用 recording_手機序列號 來命名錄屏檔案。如果需要指定影片的檔名,可以在--recording 後輸入自己需要自定義的名稱,如:--recording test.mp4 。但如果需要指定檔名且有多臺裝置時,則可以輸入--recording test.mp4,但實際的檔案命名會為手機序列號_test.mp4。需要注意的是,我們傳入的檔名必須以.mp4為字尾名

使用命令列錄屏的方式,預設錄屏檔案最長為 1800 秒,如果需要錄製更長時間,需要手動在程式碼中呼叫錄屏介面!

三、在不同平臺上的錄屏演示

Android 裝置指令碼實現錄製的演示:

Android 裝置用命令列的方式去錄製的演示:

iOS 裝置指令碼實現錄製的演示:

Windows 視窗指令碼實現錄製的演示:

六、小結

我們本週詳細介紹了 Airtest 所提供的錄屏方法,也將start_recording()的傳入引數也逐個介紹了一遍,大家也可以根據自己的需求去編寫自己所需的跑測指令碼,如果有其他更好的指令碼跑測錄屏方式,也歡迎大家給我們投稿分享一下~

同時如果大家在使用過程中有一些其他新的使用方式或者遇到了問題,又或者有任何想要深入瞭解的知識點,歡迎在官方交流群(526033840)裡告訴我們或者提交 issue。


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

官方答疑 Q 群:526033840

相關文章