1. 程式人生 > >想利用python開發手機指令碼嗎?那麼ADB的詳細使用方法你必須會!

想利用python開發手機指令碼嗎?那麼ADB的詳細使用方法你必須會!

 

前言

開發、除錯和測試工作中,大家都會發現,使用控制檯命令可以有效彰顯自己的專(tou)業(ge)性(lan)。


                學習Python中有不明白推薦加入交流群
                號:516107834
                群裡有志同道合的小夥伴,互幫互助,
                群裡有不錯的視訊學習教程和PDF!

在android測試過程,ADB命令可以提供很多便利性。但是,對於懶癌成疾的我們,每次需要通過terminal敲擊命令,還是不夠便利。如何可以進一步簡化命令操作成為我們的目標。其實,大家只要編寫簡單的指令碼,就可以節約很多冗餘繁瑣的手動操作,減少除錯過程煩躁的心情。小編今天就結合自己遇到的實際問題,從基礎開始分享python調到ADB命令的實用程式碼。

例項一:獲取手機的裝置號

場景一:電腦連線單個裝置時,基本常用的adb命令執行比較方便,可以通過adb命令完成apk的安裝以及日誌資訊的獲取。但是當電腦同時連線多臺手機時,就會出現異常提示資訊,超過adb支援的裝置數;

想利用python開發手機指令碼嗎?那麼ADB的詳細使用方法你必須會!

 


這個問題有兩種解決方案:1、物理隔斷大法,直接拔掉不用的裝置連線。但是如果操作次數較多時就會出現畫面:一個人像古老的接線員一樣在反覆插拔資料線。2、針對特定的裝置號進行操作: adb -s devicesID command 。但是手動執行命令獲取裝置ID,然後再手動配置,還是比較繁瑣。如果想用通過指令碼執行adb命令,那麼我們就需要過濾獲取裝置ID。下面小編就直接給出通過python獲取連線電腦且具有具有操作許可權的裝置的deviceID的樣例,大家可以基於該指令碼再優化滿足自己的需求:

想利用python開發手機指令碼嗎?那麼ADB的詳細使用方法你必須會!

 

 

例項二:如何獲取特定程序的pid

Python可以成功獲取所有連線電腦的手機裝置ID後,就可以針對特定手機來執行adb命令。小編在實際開發和除錯過程發現,經常需要檢視手機程序資訊,並通過PID對特定程序執行操作。為此,開始思考如何通過程序名獲取對應的PID。下面的python樣例實現通過程序名獲取並返回對應的PID:

想利用python開發手機指令碼嗎?那麼ADB的詳細使用方法你必須會!

 

 

例項三:如何停止瘋狂的monkey

開發和測試同學在除錯APP時,經常會使用monkey來測試APP的穩定性,但是經常會出現這種場景:指令碼執行結束了,但是monkey程序並沒有結束,一直瘋狂操作,著實很無奈。小編從毫無經驗開始歷經過三種解決方案:1、物理鍵強制關機後重啟手機,剛開始的工作小白階段,重啟大法就是如此的萬能。但是裝置一多時,關機就可以按到你的手指隱隱作痛;2、通過adb命令重啟手機(adb shell reboot),手指是不疼了,但是關機重啟還是需要等待一定時間,心急時所有等待都會讓人冒火;3、通過指令碼獲取monkey程序ID並殺死程序:通過python指令碼,只有一個雙擊就可以搞定之前的一切煩惱。下面的python樣例實現獲取特定裝置所有monkey程序ID並強制結束monkey測試:

想利用python開發手機指令碼嗎?那麼ADB的詳細使用方法你必須會!

 

 

例項四:如何讀取日誌並停止

android log可以有效的幫助程式設計師排查和定位問題,如果通過python實現記錄log資訊可以避免反覆輸入命令的繁瑣,同時自己定義符合自己習慣的命名規則可以有效避免其他的log被覆蓋的問題。在編寫python指令碼時,由於沒有考慮到一些細節點,導致問題,這裡進行簡單的分享:在執行指令碼幾個小時後發現,獲取並存儲到本地的log檔案大小居然有3.0G!!!排查發現是由於執行指令碼,檔案讀寫忘記關閉且手機端logcat獲取也並沒有停止,所以logcat 輸出並沒有停止,並一直寫入到檔案。針對這個問題嘗試了很多種解決方案,最後嘗試有兩種方法相對有效:1、在獲取到所有的log資訊後通過命令重啟adb server,這種方法十分有效,但是本質上還是重啟大法,實現略顯簡陋;2、在關閉檔案的同時,尋找方法直接停止logcat,這種方法更為合理些。下面的python樣例實現獲取特定裝置日誌資訊並寫入本地檔案:

想利用python開發手機指令碼嗎?那麼ADB的詳細使用方法你必須會!

 

 

在最後

關於python在android除錯和測試過程的使用,小編今天就介紹到這裡,希望能給大家帶來幫助。指令碼的動力來源於日常痛點,目的是提高效率,釋放雙手。在日常工作中,大家遇到繁(bu)瑣(shuang)的問題情況時,就可以靜心思考,是否能夠通過技術或者流程來優化。