AirtestIDE和Airtest環境相關問題FAQ

上期回顧:在Airtest自動化中如何清除iOS後臺應用


環境相關問題

pip install -U airtest 無限超時

使用 pip 命令安裝Airtest,如果出現無限超時的問題,是因爲默認源是國外服務器

 

 

可以更換成國內源:

pip install airtest -i https://pypi.tuna.tsinghua.edu.cn/simple

ADB版本衝突

在Windows環境中運行Airtest腳本時,假如運行環境本地已經存在有 adb.exe (例如裝了android_sdk, 或者是別的工具帶有adb.exe),並且ADB版本與Airtest中使用的不同,運行腳本時就可能會出現各種報錯。
常見情況下,我們會看到log中包含這樣的語句:

adb server version (40) doesn't match this client (39); killing...
  * daemon started successfully *

如log所示,我們可以看到環境裏面使用了40和39版本,版本衝突導致報錯。解決辦法是將本地所有的adb.exe統一成Airtest的版本就行,即用Airtest文件夾裏的adb覆蓋其他所有adb。
另外,adb版本衝突,還會容易導致設備斷開,出現如下報錯:

 

 

 

如何檢查adb是否連接上設備

使用AirtestIDE連接安卓設備之前,需要確保ADB已經連接上了設備。
① 我們可以使用 adb devices 來查看設備情況,如果僅僅提示 List of devices attached,則表明ADB未連接上任何設備;此時需要檢查手機上的 USB調試 功能是否已開啓,或者換一根USB數據線;
② 如果ADB已連接上設備,那麼執行 adb devices 後,會顯示已連接設備的列表:

List of devices attached
SJE5T17B17001648        device
SJE5T17B17001650        device

Yosemite等apk在哪裏可以下載

有些設備可能因爲某些權限問題,不能自動安裝Yosemite、RotationWatcher等apk,同學們首先需要檢查下手機設置裏是否沒有開啓“允許通過USB安裝應用”這樣的設置。
如果確定手機設置都開啓了,但還是不能自動安裝的話,再考慮手動進行安裝。同學們可以在官網上下載一個最新版版本的IDE,然後在如下目錄中找到這些apk,然後自行在設備上安裝即可:

 

 

本地pip list可以找到Airtest,但pycharm裏找不到

很多同學都遇到過這個問題,明明在本地命令行使用 pip list 可以看到已經安裝了Airtest庫,但是在自己的pycharm裏面卻找不到Airtest這個庫。這種情況很有可能就是你的pycharm使用了虛擬環境的解釋器。
你可以隨意運行1個項目,然後查看運行結果窗口顯示的解釋器是不是你在本地安裝的解釋器的路徑,如果不是,一般會帶有 venv 的字樣,例如:

D:\test\vene\Scripts\python.exe D:\test\test.py

這時只需要將pycharm從虛擬環境切換到安裝了Airtest的本地環境即可。
如何設置參見:如何脫離AirtestIDE在Pycharm中跑自動化腳本

ImportError: DLL load failed: 找不到指定模塊

常見的DLL報錯會出現在以下2種情況中:
① 在 cv2 模塊報 ImportError: DLL load failed: 找不到指定模塊 的錯:

 

 

根本原因應該是DLL文件的缺失,你可以直接下載一個最新版本的AirtestIDE,在解壓後的目錄中找到 api-ms-win-downlevel-shlwapi-l1-1-0.dll 和 IEShims.dll 兩個DLL文件(或者自行在網上搜索這倆個DLL文件也是可以的),然後將它們複製到 C:\Windows\System32 目錄,重新運行代碼即可解決。

 

 

② 若在 win.py 中 import win32api 時報 DLL load failed :

<Module>
    import win32api
ImportError: DLL load failed: 找不到指定的程序。

建議您運行下列指令,更新爲223版本的 pywin32:

pip uninstall pywin32
pip install pywin32==223

no module named 'airtest'、‘poco’、‘airtest-selenium’等,找不到模塊

在當前使用的python環境中,安裝上缺失的對應模塊:

pip install airtest
pip install pocoui #(不能安裝poco,如安裝了請卸載pip uninstall poco)
pip install airtest-selenium

如果安裝後仍找不到,請檢查真實使用的環境和你以爲的環境是不是一個環境。

AirtestIDE相關問題

IDE的腳本編輯和log查看窗口不顯示文字

有些同學在啓動IDE後,發現不能夠看到腳本編輯窗口和log查看窗口中的文字,就像下圖這樣:

 

 

包含啓動後閃退在內,這些問題大概率都是由顯卡兼容性問題導致的。我們可以通過雙擊文件夾中的 兼容性模式啓動.bat 腳本就能夠正常啓動AirtestIDE。
並且,在設置中有一個選項:

 

 

默認情況下會選擇 default 模式。如果啓動有問題的用戶,可以嘗試選中下拉菜單中的另外三個選項,並且重啓AirtestIDE,查看接下來是否能正常顯示腳本編輯窗口和log查看窗口。
如果能夠生效,未來啓動AirtestIDE時都將會以這個配置項來啓動,無需每次都手工雙擊 兼容性模式啓動.bat 腳本來啓動AirtestIDE了。

複製IDE中log窗口生成的報告在命令行執行報錯

常見的情況可能有如下幾種:

  1. 複製的命令路徑中含有空格,導致程序報錯:找不到文件或者路徑;只需要將命令中的路徑用英文模式下的雙引號括起來即可。

  2. 命令行中包含了&這樣的符號,可能會導致命令行被中斷,常見於一些勾選了 “use javacap” 這樣的選項後連接的設備,但是&這個字符需要轉義才能夠生效。先嚐試用雙引號把參數命令括起來,不行的話嘗試:Windows下改寫成^&,MAC下改寫成/&

在IDE中如何引入第三方庫?

AirtestIDE內置了一個精簡的python環境,缺少很多第三方庫;如果需要在IDE中引入各種第三方庫,可以先在本地的python環境中裝好,再設置IDE使用本地的python環境,具體步驟如下:

  1. 請自行在你的電腦上安裝屬於你自己的Python。你可以通過一些環境管理方案來管理你的python環境,例如conda

  2. 在剛纔安裝好的本地Python環境中,安裝airtest相關的依賴庫。

  3. 在本地安裝完屬於你自己的python環境後,再在IDE的設置裏面設置好你本地的python.exe的路徑。
    詳細內容請參考:Airtest之python本地環境安裝、獨立IDE運行

連接模擬器出現黑屏

① 先嚐試在連接模擬器之前下拉勾選 “Use javacap” 選項,之後再點擊“connect”按鈕連接模擬器
② 如果仍然黑屏,斷開模擬器,下拉勾選 “Use javacap” 和 “Use ADB orientation” 這倆個選項,再次連接即可

模擬器勾選上連接參數之後還是連不上

連接模擬器的時候,我們需要勾選上一些備選的連接參數才能連接上模擬器,或者不讓模擬器黑屏。
比如連接雷電時需要勾選上 Use javacap,而連接夜神的時候需要勾選上 Use javacap 和 Use ADB orientation 這倆個選項。
但是在一些版本的模擬器中,即使勾選上了連接參數,仍然可能連接不上模擬器,並出現如下的報錯:

 

 

這是因爲在連接這些版本的模擬器時,不能自動安裝上 Yosemite.apk ,我們可以通過手動安裝這個 apk ,再重新連接模擬器即可。
更多詳情參見:airtestIDE連接模擬器及常見問題

設備連接不上

AirtestIDE連接安卓真機及常見問題
airtestIDE連接iOS真機
airtest之使用tidevice工具輕鬆連接iOS

三個備選的連接參數

1)備選參數在哪裏選擇
在AirtestIDE的設備連接窗口中,點擊connect連接設備之前,單擊connect右側的下拉按鈕,即可找到3個連接設備的備選參數:

 

 

2)3個備選參數分別代表什麼意思
① 第一個 Use javacap ,是給部分無法正常看到手機畫面、minicap初始化失敗 的手機或設備用的,所以模擬器看到黑屏、部分特殊的平板等設備可以考慮勾選這個選項
② 第二個 Use ADB orientation 是用於 屏幕旋轉 的,如果在安卓手機屏幕旋轉方向檢測有問題、或者是部分特殊的平板無法顯示正確的屏幕方向時可以勾選
③ 第三個 Use ADB touch 是 發送adb指令來點擊屏幕 ,效果很差,速度也很慢,不建議勾選,只有在 部分無法點擊屏幕的特殊安卓設備 上才需要使用(例如智能後視鏡、特殊型號的平板等設備上) 正常情況下,手機都可以點擊,如果無法被點擊(比如小米設備),一般都是因爲手機設置有選項漏了打開,特別是小米設備要注意 開啓允許模擬點擊 的設置

3)是不是把備選參數全帶上就能適配所有設備
正常情況下,同學們連接設備是不需要勾選任何備選參數的,我們也不建議大家主動把所有備選參數都勾選上,因爲這些備選參數會影響設備連接和使用的效果。
除非是上述提到的特殊情況,比如無法使用minicap的設備,可以通過勾選 use javacap 來連接;常見的需要勾選備選參數的設備,MIUI12的小部分型號,部分模擬器,部分特殊安卓設備等。

4)如何在腳本中添加備選參數
如在IDE連接設備時,勾選了一些備選參數,則同學們在腳本中連接該設備,也要添加對應的備選參數。特別是使用此類設備在命令行運行腳本時,千萬要記得將參數加在設備連接字符串上:

# 添加了3個備選參數的1個安卓設備
Android://127.0.0.1:5037/79d03fa?cap_method=JAVACAP&&ori_method=ADBORI&&touch_method=ADBTOUCH

minicap serve setup time out

屏幕初始化失敗,常見於高版本MIUI設備或者模擬器等;先檢查當前IDE是否爲最新版本,不是請把IDE更新到最新版本;然後再嘗試在connect設備之前,下拉勾選 use javacap ,再連接設備。

minitouch serve setup timeout

點擊初始化失敗,常見於安卓10或者10以上的設備,解決辦法,檢查當前環境的airtest版本是否爲最新的(IDE更新到最新版本,使用本地python環境把本地環境的airtest更新到最新版本)

Javacap server setup timeout

設備不適用於 javacap ,在IDE連接設備之前 請勿勾選 use javacap ,腳本連接設備的字符串也不要帶 ?cap_method=JAVACAP。最後請確保當前使用的是最新版本的airtest。

如何顯示座標

頂部菜單欄,選項-設置,只勾選實時座標顯示,則顯示絕對座標;同時勾選實時座標和相對座標,則顯示相對座標。(Airtest使用絕對座標系,poco使用相對座標系)

輔助窗沒有刷出UI樹

1)除原生應用之外,其餘引擎都需要接入SDK纔可以查看UI樹;
2)檢查手機上是否已經自動安裝上poco初始化相關的2個apk(pocoservice-debug.apk、pocoservice-debug-androidTest.apk),未安裝要手動安裝上;
3)安裝輸入法 Yosemite 並設爲默認輸入法
部分廠商的手機需要額外的設置,AirtestIDE連接安卓真機及常見問題

使用IDE截圖特別模糊如何處理

如果同學們發現使用IDE截出來的圖片非常模糊,可以嘗試在AirtestIDE的 選項--設置 中,把 手機設備顯示分辨率 調成2000,之後再重新連接設備,查看截圖清晰度是否有所改善。
如未改善,還可以查看設備連接窗口的設備畫面是否清晰,如還是非常模糊的話,可以先斷開連接,然後在 conncet 之前勾選 use javacap ,之後再嘗試截圖。

點擊不生效

詳情請看:
https://mp.weixin.qq.com/s/2dieUfDIDsEQZnd37FSVDA

---------------------------------------------------------------------------------

關注微信公衆號即可在手機上查閱,並可接收更多測試分享~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章