為什么要使用命令行來執行腳本
想同時用多個命令行運行多台手機、多個腳本等情況,以及對於一些Python開發者來說,可能需要在腳本中使用其他功能強大的Python第三方庫。因此推薦在本地python環境中安裝airtest和pocoui,然后用命令行運行腳本。
准備環境
首先必須要有python環境
使用 pip 安裝Airtest模塊
pip install airtest
注意:在Mac/Linux系統下,需要手動賦予adb可執行權限,否則可能在執行腳本時遇到Permission denied的報錯,我就碰到了
# mac系統 cd {your_python_path}/site-packages/airtest/core/android/static/adb/mac # linux系統 # cd {your_python_path}/site-packages/airtest/core/android/static/adb/linux chmod +x adb
若在安裝opencv-contrib-python庫時,提示找不到我們指定的3.2.0.7版本時,可以考慮更新你的pip到最新之后再進行重試,官網文檔提到最要不要使用pyhont3.7版本,建議使用穩定的python3.6.5版本,不過我親測3.7可用。
使用 pip 安裝poco框架
pip install pocoui # 請注意庫的名稱為pocoui,不要填錯
環境部署完成后,我們就能夠脫離AirtestIDE,在不同的宿主機器和被測平台上運行腳本了。
執行命令
# 這兩個命令行的效果是相同的,我們用airtest運行了一個叫做untitled.air的腳本 >airtest run untitled.air --device Android:///手機設備號 --log log/ >python -m airtest run untitled.air --device Android:///手機設備號 --log log/ # 可以使用python sys模塊查看site-packages文件夾所在的路徑 import sys print(sys.path)
參數說明:
airtest run 后面接的的腳本文件的路徑。
--device,是我們的手機設備。
--log,log輸出目錄。
關於--device的說明
在剛才的命令行中使用的--device參數,傳入的是一個設備字符串,以安卓設備為例,字串完整定義如下:
Android://<adbhost[localhost]>:<adbport[5037]>/<serialno>
其中,adbhost是adb server所在主機的ip(本地host為127.0.0.1),adb port默認是5037,serialno是android手機的序列號。更多adb的方面的內容請參考文檔developer.google。
在平時的腳本運行中,我們一般可以這樣寫:
# 什么都不填寫,會默認取當前連接中的第一台手機 Android:/// # 連接本機默認端口連的一台設備號為79d03fa的手機 Android://127.0.0.1:5037/79d03fa # 連接一個Windows窗口,窗口句柄為123456 Windows:///123456 # 連接一個Windows窗口,窗口名稱匹配某個正則表達式 Windows:///?title_re=Unity.* # 連接iOS手機 iOS:///127.0.0.1:8100
生成測試報告
""" 參數說明 --log_root: 指定腳本執行完畢后生成log文件夾的路徑 --outfile: 指定輸出的html文件路徑 --lang: 指定輸出的語言,zh為中文 """ airtest report untitled.air --log_root log/ --outfile log/log.html --lang zh