版權聲明:允許轉載,但轉載必須保留原鏈接;請勿用作商業或者非法用途
此文章來源於項目官方公眾號:“AirtestProject”
前言
相信小伙伴們多少都會遇到想要修改Airtest
源碼,方便自己腳本編寫的情況。這時,部分同學會立即去修改AirtestIDE
文件夾下Airtest
庫的.py
文件(如下圖),其實這樣修改是無效的,並不會達到預期的效果。
正確的修改Airtest
源碼的步驟是:
- 在本地安裝
python
環境 - 安裝
Airtest
- 安裝
Poco
- 在本地的
Airtest
庫中修改源碼
在本地安裝python環境
Airtest
支持Python
版本為2.7或者<=3.6,但是我們更推薦使用 Python3
。如果你願意的話我們也同樣建議使用 virtualenv
等虛擬環境新建一個干凈的python
環境。各個版本的python
可以自行到python
官網上下載安裝。
安裝Airtest
-
使用
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
-
若運行代碼時,在
cv2
模塊報ImportError: DLL load failed:
找不到指定模塊 的錯誤,有以下幾種解決方案:- 問題的根本原因應該是
DLL
文件的缺失,我們將它們放入了IDE
的目錄中,可以直接下載一個最新版本的AirtestIDE
,在解壓后的目錄中找到api-ms-win-downlevel-shlwapi-l1-1-0.dll
和IEShims.dll
兩個DLL
文件,將他們復制到C:\Windows\System32
目錄,重新運行代碼即可解決 - 如果使用了
python3.7
,請安裝Visual C++ redistributable 2015
- 如果使用的python版本低於3.7,請直接運行:
> pip uninstall opencv-contrib-python # 若以下安裝語句運行失敗,可以嘗試更新pip到最新版本后重試 > install opencv-contrib-python==3.2.0.7 若在win.py中import win32api時報DLL load failed,可以嘗試重新安裝pywin32模塊: pip uninstall pywin32 pip install pywin32==223
- 問題的根本原因應該是
安裝Poco
使用 pip
安裝poco
框架 pip install pocoui
,請注意庫的名稱為 pocoui
,不是poco
,請不要填錯。
如果你在命令行中使用pip list
,看到同時存在poco
和pocoui
兩個庫,請把poco
卸載,因為pocoui
才是正確的庫。
在本地的Airtest庫里面修改源碼
完成上述三步以后,其實就是在本地部署了一個python
環境來使用airtest
和poco
。然后我們可以修改本地安裝的Airtest
庫里面的源碼,使得修改生效。
舉個例子,打開你本地安裝的Airtest
庫,找到Airtest>--airtest>--core
目錄下的api.py
文件,在touch
方法里加一條代碼,如下:
那么你在命令行運行腳本的時候,如果腳本里面寫有touch
語句,你在touch
方法里面增加的print
語句也會生效:
如果想要你修改的內容在IDE也生效的話,只需要將IDE的運行環境改成本地運行環境即可:
這時候IDE運行時,使用的Airtest
庫就不是IDE自帶的Airtest
庫,而是你在本地安裝的Airtest
庫,運行一條touch
語句,之前對touch
方法的修改也會在IDE里面生效了: