前言
經常有同學過來問如何在腳本運行的過程中進行錄屏操作,其實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
並且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
另外我們需要注意下,傳入的錄屏文件名必須以 .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
,默認的保存路徑和項目目錄一致。
不一樣的錄屏方式
airtest1.1.3版本和1.1.4版本(IDE1.2.3-1.2.5)使用 Yosemite.apk
來進行錄屏操作,但比較特別的是,初次使用錄屏功能時 需要同學們手工打開 Yosemite.apk
去點一次同意權限 ,很多同學都不知道還有這一個步驟,所以錄屏操作經常因為沒有給到權限,而出現錄屏失敗的情況。
而最新版本的airtest,即1.1.6版本(IDE1.2.6),則把錄屏功能的代碼 回退到了之前不用 Yosemite.apk
錄屏的版本 。回退到舊版本之后,同學們便 不用手動再去 Yosemite
應用里面點一次同意權限(注意是1.1.6版本的airtest),直接使用相關的參數和方法即可。
常見的錄屏異常
部分模擬器不支持錄屏
安卓模擬器的錄屏機制和安卓真機的錄屏機制存在一些差異,因此,我們並不能保證在所有的模擬器上面都能夠進行錄屏操作,比如雷電模擬器可以進行正常的錄屏操作,但 在夜神模擬器上錄屏時就容易報錯。
密碼界面錄屏黑屏
在測試部分品牌手機的過程中,有同學會發現一到輸入密碼的界面時,設備畫面就全黑了,導致錄出來一部分黑屏的內容。這是因為在密碼輸入的界面,一般都做有一些防止惡意截屏錄屏的措施。如果同學們不想出現黑屏畫面的話,我們可以嘗試在安全設置中,把安全鍵盤之類的設置關掉 ,或者是 關掉其它一些防止惡意截屏錄屏的設置 。
如對錄屏還存在疑問的同學,可以在評論中留下你的問題~
AirtestProject官方答疑Q群:1017250147
Airtest官網:http://airtest.netease.com/
Airtest教程官網:https://airtest.doc.io.netease.com/
搭建企業私有雲服務:https://airlab.163.com/b2b