前言
今天跟同學們來聊一聊點擊不生效這個問題,經常聽到答疑群里面有同學說:為什么我的代碼執行了,但實際上沒有發生點擊的動作呢?又或是,為什么我用IDE連接上了設備,卻不能點擊手機畫面呢?
下面我們就來看下,當同學們遇到各種“點擊不生效”的情況時,究竟該如何排查。
“點擊不生效”的排查辦法
1. 檢查是否使用了最新版本
① 使用AirtestIDE自帶的環境
查看當前IDE的選項--設置里面,是否自定義了python.exe的路徑,如未設置,則只需要檢查當前的AirtestIDE是否為最新版本即可,不是最新版本的話,先將其更新到最新版本:

② 使用了本地python環境
如自定義了python.exe的路徑,則表示當前未使用AirtestIDE自帶的環境,而是使用了自定義的本地python環境,則需要檢查自定義python環境里面的airtest庫是否為最新版本,如不是最新,也請把airtest庫更新到最新版。
我們可以在命令行運行 pip list 查看(如本地存在多個python環境,則需要特別注意區分自己使用的是哪個):

命令行運行或者其它python編輯器運行的情況同理,需要檢查當前運行環境里面裝的airtest庫是否為最新版。
2. 嘗試在IDE里面看看能否點擊手機畫面
① 能點擊
則排除手機設置的問題。
② 不能點擊
特別注意部分品牌手機需要開啟“允許模擬點擊位置”此類的選項,詳情可查看官方文檔:https://airtest.doc.io.netease.com/IDEdocs/device_connection/2_android_faq/#2 。
3. 單獨寫一個腳本,只運行點擊不生效的那條語句,運行后生成報告
這里是使用最小可復現腳本的辦法,排除其它代碼的干擾,能更快速定位到問題:
① log查看窗出現了報錯
如出現類似 Picture xxx not found in the screen 的報錯,則表明截圖識別失敗了,我們需要重新截圖;比如說截取特征更加明顯的截圖,減少混入多余的背景等等,關於如何提高截圖腳本的兼容性,我們也在之前的推文 “寫了10000條Airtest截圖腳本總結出來的截圖經驗,趕緊收藏!” 有詳細介紹,有需要的同學可以直接前往閱讀。
如出現類似 PocoNoSuchNodeException: Cannot find any visible node by xxx 的報錯,則表明查找控件失敗,需要檢查控件的定位方式是否正確,當前頁面是否存在此控件等。
② 沒報錯,但查看報告發現點到了錯誤的位置
多出現於截圖腳本:
一種情況是,當前頁面存在多個相同的截圖,實際運行時沒有點擊到你的真實目標上面,此時可以通過局部識圖、或者調整截圖的 target_pos來輔助你定位到你的真實目標上面。
另外一種情況是,識別到了毫不相干的錯誤的目標上,有可能是圖像闕值比較低,混入了錯誤的結果,可以嘗試調整闕值過濾錯誤的結果。
③ 沒報錯,但查看報告發現點擊出現了一定的位置偏移
常出現於Poco控件點擊腳本中:
首先我們可以借助IDE輔助窗的檢索控件功能,把鼠標移動到對應的控件上面,看看鎖定控件的框框是否出現了偏移,如出現了偏移,我們可以通過一些偏移修正,或者去掉手機的虛擬按鍵欄來解決,詳見我們的官方教程文檔: https://airtest.doc.io.netease.com/IDEdocs/device_connection/2_android_faq/#_9 。
④ 查看報告發現畫面未加載完畢就進行了點擊
當畫面未加載完全或者不夠穩定的情況下,我們立即進行了點擊操作,很可能出現點擊操作確實執行了,但應用沒能響應這個點擊的情況。
此時我們可以在點擊之前添加足夠時長的 sleep() 以保證我們的應用穩定后再進行后續的點擊操作。
小結
最后,我們提供了“點擊不生效”的自檢流程圖,有需要的同學可以保存下來自查哦!

Airtest官網:https://airtest.netease.com/
Airtest教程官網:https://airtest.doc.io.netease.com/
搭建企業私有雲服務:https://airlab.163.com/b2b
官方答疑 Q 群:654700783
呀,這么認真都看到這里啦,幫忙點個推薦支持一下唄,灰常感謝~
