Airtest錄屏總結,這不是一個簡單的recording!


前言

經常有同學過來問如何在腳本運行的過程中進行錄屏操作,其實airtest有給我們提供錄屏功能,但是教程中講的極少。

所以今天給大家總結了錄屏的相關知識,希望能幫助大家解決對錄屏這塊內容的疑問。

在命令行使用-- recording錄屏

錄屏功能僅適用於安卓平台,所以當測試設備是安卓真機或者部分安卓模擬器時,我們才能夠對腳本的運行過程進行錄屏操作。

在命令行使用 airtest run 運行腳本時,我們可以通過添加 --recording 參數來錄制腳本運行的視頻。(運行結束后,錄屏文件會默認保存在log文件夾里面,使用 recording_手機序列號 來命名錄屏文件)

airtest run "D:\test\Airtest_example.air"  --device android://127.0.0.1:5037/emulator-5554?cap_method=MINICAP_STREAM^&^&ori_method=MINICAPORI^&^&touch_method=MINITOUCH --log "D:/test\41f68fdf265d8c13998d0a1a7b992889" --recording

image

並且airtest1.1.6支持 在 --recording 參數后面加上一個文件名來命名錄屏文件 ,例如 --recording test.mp4 ,如果有不止一台手機在運行,會把文件命名為 手機名_test.mp4 。下述示例使用 --recording 123.mp4 指定錄屏文件名為 123.mp4 :

airtest run "D:\test\untitled.air"  --device android://127.0.0.1:5037/emulator-5554 --log "D:/test\6fe87b11ca1fc75ebe670439f20fabfc" --recording 123.mp4

image

另外我們需要注意下,傳入的錄屏文件名必須以 .mp4 作為結尾!

在腳本中調用錄屏方法

除了在命令行使用 --recording 參數來錄制腳本運行的視頻之外,我們還可以直接在腳本中調用開始錄屏和結束錄屏的方法來幫助我們錄制腳本運行過程的視頻。

使用的方法分別是 start_recording() 和 stop_recording() ,方法詳情可以參看此鏈接的內容,https://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.android.recorder.html?highlight=recording#airtest.core.android.recorder.Recorder.start_recording 。

腳本示例如下:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"

from airtest.core.api import *
from airtest.core.android.recorder import *
from airtest.core.android.adb import *

auto_setup(__file__,devices=["android://127.0.0.1:5037/emulator-5554"])

adb = ADB(serialno="emulator-5554")
recorder = Recorder(adb)

# 開啟錄屏
recorder.start_recording(max_time=10)

touch(Template(r"tpl1603091574169.png", record_pos=(0.113, -0.302), resolution=(900, 1600)))
sleep(3.0)

# 結束錄屏
recorder.stop_recording(output="test.mp4")

需要注意的是,錄屏的這兩個方法 屬於 Recorder(adb) 類 ,所以我們在使用這2個方法之前,要先實例化這個類,之后再用這個實例去調用類里面的關於錄屏操作的方法。

在這兩個方法中,有2個參數我們可以特別關注下:

一個是 start_recording() 的 max_time 參數,可以用來 設置最長的錄屏時間 ,默認值是1800,即半個小時,可以根據自己的實際需求修改這個錄屏時長。如果腳本的運行時長小於這個 max_time 的值,則錄屏時長以腳本實際運行時長為准。但如果腳本運行時長大於 max_time 的值,那錄屏時長以 max_time 的時長為准。

第二個是 stop_recording() 的 output 參數,可以用來 設置錄屏文件的文件名 ,默認為 screen.mp4 ,默認的保存路徑和項目目錄一致。

image

不一樣的錄屏方式

airtest1.1.3版本和1.1.4版本(IDE1.2.3-1.2.5)使用 Yosemite.apk 來進行錄屏操作,但比較特別的是,初次使用錄屏功能時 需要同學們手工打開 Yosemite.apk 去點一次同意權限 ,很多同學都不知道還有這一個步驟,所以錄屏操作經常因為沒有給到權限,而出現錄屏失敗的情況。

image

而最新版本的airtest,即1.1.6版本(IDE1.2.6),則把錄屏功能的代碼 回退到了之前不用 Yosemite.apk 錄屏的版本 。回退到舊版本之后,同學們便 不用手動再去 Yosemite 應用里面點一次同意權限(注意是1.1.6版本的airtest),直接使用相關的參數和方法即可。

常見的錄屏異常

部分模擬器不支持錄屏

安卓模擬器的錄屏機制和安卓真機的錄屏機制存在一些差異,因此,我們並不能保證在所有的模擬器上面都能夠進行錄屏操作,比如雷電模擬器可以進行正常的錄屏操作,但 在夜神模擬器上錄屏時就容易報錯。

image

密碼界面錄屏黑屏

在測試部分品牌手機的過程中,有同學會發現一到輸入密碼的界面時,設備畫面就全黑了,導致錄出來一部分黑屏的內容。這是因為在密碼輸入的界面,一般都做有一些防止惡意截屏錄屏的措施。如果同學們不想出現黑屏畫面的話,我們可以嘗試在安全設置中,把安全鍵盤之類的設置關掉 ,或者是 關掉其它一些防止惡意截屏錄屏的設置 。

如對錄屏還存在疑問的同學,可以在評論中留下你的問題~


AirtestProject官方答疑Q群:1017250147

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM