前言
.bat
文件是可執行文件,它包含一條或多條命令。使用 .bat
文件進行批處理操作,可以幫助我們簡化日常或者重復性的操作。
之前我們的教程講過如何使用命令行運行Airtest腳本,實際上 .bat
文件里面的命令也是靠 cmd.exe
解析執行的,所以我們可以在 .bat
文件中編寫運行airtest腳本的命令,以此來執行airtest腳本。
1.用bat文件執行單個Airtest腳本
我們來先來復習下,使用命令行運行Airtest腳本的指令: airtest run + 腳本文件路徑
,另外還可以在命令后面跟上 --device
、--log
和 --recording
等參數。
舉幾個運行airtest腳本的例子:
# 不帶任何參數運行腳本 airtest run D:\test\newsLogin.air # 帶命令行參數運行腳本 airtest run D:\test\newsLogin.air --device Android:/// --log log/ --recording
回顧了在命令行運行airtest腳本的知識點后,我們再來看下如何新建 .bat
文件。首先我們需要在電腦上新建一個 .txt
文件,並輸入以下內容:
::關閉回顯
@echo off
::切換到D盤
D:
::進入D盤的test目錄
cd D:\test
::執行 airtest run 命令
start airtest run newsLogin.air
exit
其中 ::xxx
表示的是注釋內容,可以不寫入 .txt
文件中;另外示例腳本的路徑為 D:\test\newsLogin.air
,所以這里還做了切換到腳本路徑的操作,同學們可以根據自己腳本的實際情況來進行切換。
還需要注意的是,在上述示例中,我們已經在示例腳本的開頭添加了設備和 log
的初始化內容,所以不用另外在運行命令后面加上各種運行參數:
auto_setup(__file__,logdir=True,devices=["Android://127.0.0.1:5037/emulator-5554"])
如果同學們的測試設備相對固定,也建議直接將這些參數寫到腳本中,可以簡化命令行運行腳本的命令。
寫完以上幾條命令后,我們關掉 .txt
文件,將他的后綴名 txt
改成 bat
,之后會彈出重命名的警示彈窗,點擊“是”即可。最后,我們可以來檢測下運行效果:
2.用bat文件順序執行多個Airtest腳本
使用 .bat
文件成功執行單個airtest腳本之后,我們來試試用 .bat
文件順序執行多個airtest腳本:
@echo off
D:
cd D:\test
title 正在執行第一個腳本
airtest run newsLogin.air
title 正在執行第二個腳本
airtest run newsUsing.air
title 正在執行第三個腳本
airtest run newsExit.air
exit
可以看到,在上述登錄網易新聞的示例腳本之外,我們又增加了兩個腳本,分別用來實現使用網易新聞和退出登錄等操作。
所以在 .bat
文件中,我們分別寫了三條用於運行對應腳本的命令,其中 title xxx
用來指定命令提示窗口的標題,可以讓我們清晰地看出當前是在執行第幾個腳本。最終的執行效果如下:
3.用bat文件實現多機運行
在 .bat
文件中,start
可以啟動單獨的命令行窗口來運行指定程序或命令。所以我們可以利用 start
命令開啟多個命令行窗口,實現在多台設備上執行同一個腳本:
@echo off D: cd D:\test start "正在使用雷電模擬器跑腳本" airtest run newsLogin.air --device Android://127.0.0.1:5037/emulator-5554 start "正在使用mumu模擬器跑腳本" airtest run newsLogin.air --device Android://127.0.0.1:5037/127.0.0.1:7555 exit
上述命令可以實現在1台雷電模擬器和1台mumu模擬器上跑同一個腳本,效果如下:
當然,我們還可以給每一台設備單獨配置1個 .bat
文件,最后再寫1個總的 .bat
文件來調度前面用於在特定設備上運行腳本的 .bat
。如果大家感興趣的話,也可以自行實現任務調度、多線程運行的方案來批量運行腳本。
小結
在一些情況下,使用 .bat
文件可以幫助我們簡化代碼,並減少很多重復性的操作,童鞋們可以根據自己的實際情況靈活使用~
Airtest官網:http://airtest.netease.com/
Airtest教程官網:https://airtest.doc.io.netease.com/
搭建企業私有雲服務:https://airlab.163.com/b2b