指南:半小時上手 Python 控制安卓設備的自動化腳本)
adbutils 實戰(zhàn)指南半小時上手 Python 控制安卓設備的自動化腳本【免費下載鏈接】adbutilspure python adb library for google adb service.項目地址: https://gitcode.com/gh_mirrors/ad/adbutils周五下班前領導丟來一句話明天這批測試機每臺都要裝上新版 App再把首頁截圖收集上來。 數了數桌上的設備——八臺真機加兩臺模擬器。要是用傳統(tǒng) adb 命令一臺臺敲光是安裝和截圖就能耗掉一個下午。這時候你需要的是一個能寫在腳本里、循環(huán)跑完所有設備的 Python ADB 庫adbutils。它是 Google ADB 服務的純 Python 實現把 連設備、裝應用、傳文件、截圖錄屏、模擬輸入 全部收進幾十個直觀 API 里讓繁瑣的重復操作變成幾行循環(huán)代碼。第一步裝好 adbutils 運行環(huán)境兩種途徑任選先記住這一條就夠用了adbutils 本質是一個普通 Python 包安裝方式和其他庫沒有區(qū)別。途徑一pip 一行命令裝完最省事的方式直接交給包管理器pip3 install adbutils如果你后續(xù)要用到完整功能比如命令行生成二維碼、通過 HTTP 解析遠程 APK就裝上帶全部可選依賴的版本pip3 install adbutils[all]途徑二從源碼安裝方便改代碼想研究源碼或貢獻代碼的人可以克隆到本地再以開發(fā)模式安裝git clone https://gitcode.com/gh_mirrors/ad/adbutils cd adbutils pip3 install -e .小提示-e是 editable 模式改完源碼立刻生效不用重復安裝。本庫要求 Python 3.8 及以上。第二步把手機連上來本地與遠程一視同仁安裝只是熱身真正的流程從拿到一個設備對象開始。所謂設備對象就是后續(xù)所有操作的主語——你叫它d之后d.xxx()就代表在這臺手機上做 xxx。列出當前所有設備from adbutils import adb for device in adb.device_list(): print(f發(fā)現設備: {device.serial}) # 串號相當于手機的身份證# 只有一臺設備時連串號都不用傳 d adb.device() # 多臺設備時必須指定串號否則會直接報錯 d adb.device(serial33ff22xx)連接遠程/網絡設備無線調試、云測機、局域網設備都走這一步adb.connect(192.168.1.100:5555) # 等價于 adb connect adb.wait_for(192.168.1.100:5555, statedevice, timeout10) # 最長等 10 秒直到設備上線易踩的坑adb.connect()只負責發(fā)起連接不代表設備已就緒。建議連接后立刻wait_for確認狀態(tài)腳本才不容易半路翻車。第三步開始干活——裝應用、查應用、卸應用設備到手先解決領導最著急的裝 App任務。adbutils 的安裝接口既吃本地文件也吃網絡地址# 裝本地 APK d.install(build/app-release.apk) # 裝遠程 APK適合 CI 里直接從制品庫拉包 d.install(http://example.com/app.apk)配合卸載和查詢一個完整的換版本流程就出來了d.uninstall(com.example.app) # 卸載舊版 d.install(build/app-release.apk) # 裝新版 d.list_packages() # 列出所有已安裝包確認裝沒裝上真實場景加分項批量給多臺設備裝包只需套一層循環(huán)——這正是把 adbutils 寫進自動化腳本的意義所在。第四步傳文件——一條 push 一句 pullApp 裝完接下來要把測試配置、數據文件分發(fā)到每臺設備再把設備上的日志和截圖收回來。文件傳輸走d.sync對象# 本地 - 設備 d.sync.push(config.json, /sdcard/atx/config.json) # 設備 - 本地 d.sync.pull(/sdcard/crash.log, crash_33ff22xx.log)# 需要邊下邊處理大文件用迭代器逐塊讀取 for chunk in d.sync.iter_content(/sdcard/bigfile.bin): write_chunk(chunk)小提示pull會把遠端文件拉到當前目錄多設備時給文件名拼上串號如上避免互相覆蓋。第五步拿結果——截圖、錄屏、模擬輸入領導要求的首頁截圖就是這里了。adbutils 的截圖接口是高頻操作值得單獨記住d.screenshot(home_33ff22xx.jpg) # 保存到本地一步到位需要錄一段操作過程留檔用錄屏接口設置好時長自動停止d.screenrecord(demo.mp4, duration10) # 錄 10 秒自動停說明錄屏底層會根據環(huán)境自動選擇 scrcpy 或 adb 原生方案你只需調用統(tǒng)一接口。光截圖還不夠自動化里經常要替手指點屏幕。兩個最常用的模擬輸入接口d.send_keys(Hello, adbutils!) # 向當前輸入框發(fā)送文本 d.keyevent(HOME) # 按下系統(tǒng)鍵HOME/BACK/MENU 都支持 d.open_browser(https://example.com) # 直接喚起默認瀏覽器打開網址易踩的坑send_keys只能發(fā)文本中文或特殊符號在部分設備上會丟字符需要復雜輸入時建議配合 shell 層做兜底。第六步處理翻車——超時、異常與通用 shell 兜底腳本寫得再順也架不住設備抽風。adbutils 的異常體系很干凈頂層異常是AdbError超時有獨立的AdbTimeout接住即可from adbutils import AdbError try: d.shell(sleep 1, timeout0.5) # 故意設很短模擬慢命令 except AdbError as e: print(f操作失敗: {e})另外凡是庫里沒有封裝的命令都可以用d.shell(...)直接打進設備執(zhí)行——它是萬能兜底output d.shell(getprop ro.product.model) # 查設備型號 print(output.strip())需要拿到退出碼和完整 stdout/stderr 時用d.shell2(...)會更順手。附不寫代碼也能用——命令行快照如果只是臨時看一眼python -m adbutils自帶全套命令行無需編程想做的事命令查看 ADB 服務版本python -m adbutils -V列出已連接設備及型號python -m adbutils -l安裝 APK本地或 URLpython -m adbutils -i app.apk列出已安裝包python -m adbutils --list-packages手機截圖python -m adbutils --screenshot screen.jpg推送文件python -m adbutils --push local.txt:/sdcard/remote.txt拉取文件python -m adbutils --pull /sdcard/remote.txt實時監(jiān)控設備狀態(tài)變化python -m adbutils --track調優(yōu)三件套環(huán)境變量控制全局行為多設備、多環(huán)境跑自動化時靠環(huán)境變量就能省掉一半傳參ADBUTILS_ADB_PATH指定 adb 可執(zhí)行文件路徑系統(tǒng)里裝了幾個 adb 也不怕認錯ANDROID_SERIAL設置默認設備串號之后adb.device()直接命中這臺ANDROID_ADB_SERVER_PORT指定 ADB 服務端口默認 5037多服務并存時很有用相關資料想深入某個細節(jié)可以順著這些路徑直接讀源碼與文檔設備操作核心實現adbutils/_device.pyADB 協議細節(jié)docs/PROTOCOL.md文件同步測試示例e2etests/test_device_sync.py回頭再看開頭那個場景裝包、傳配置、截圖、收日志全流程用 adbutils 寫成一個腳本循環(huán)跑完十分鐘收工。這份 adbutils 安裝教程只是起點把它接進你的自動化腳本里下一批設備再也不會占用你的下班時間?!久赓M下載鏈接】adbutilspure python adb library for google adb service.項目地址: https://gitcode.com/gh_mirrors/ad/adbutils創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考