對於 Android 端的自動化測試,ADB 的重要性不言而喻,不少開源的自動化框架操做大都是利用 ADB 命令來完成。android
下面對 ADB 在平時自動化操做過程當中一些問題作一個彙總。shell
1、ADB 簡介windows
ADB 全稱:Android Debug Bridge,是一種命令行工具,方便 PC 端和手機端進行通訊。緩存
只須要去官網下載 Android SDK,而後根據 ADB 文件的路徑 配置環境變量 便可。框架
2、鏈接設備tcp
進入設置裏的開發者選項,開啓開發者選項和 USB 調試。
ide
數據線直連設備:可使用 adb devices 檢查設備是否鏈接成功。
工具
無線鏈接設備:測試
無線鏈接設備須要分 3 步完成。分別是:讓 PC 和設備在同一局域網、映射端口、經過 IP 完成鏈接。ui
# 映射端口 adb tcpip 端口號 # 經過 IP 地址鏈接 adb connect 設備IP
3、獲取應用包名、入口 Activity
自動化打開目標應用 App 須要應用包名和入口 Activity 參數,獲取這兩個參數有多種方式。
其中最經常使用的方式是利用 adb shell dumpsys 命令。
# 獲取應用的包名和入口 Activity adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' --color=always
另一種方式是在安卓應用市場下載目標應用的 Apk,而後利用 Android Studio IDE 分析 APK,拿到 Manifest.xml 文件,獲得應用的包名和入口 Activity。
4、經常使用操做
Airtest、Appium 等自動化框架都是在 ADB 的基礎上進行了封裝,使咱們對打開應用、點擊、滑動等操做變得很簡單。
可是,下面操做直接 adb 會更方便。
# 滑動,直接使用起始座標更方便 adb shell input swipe 開始x座標 開始y座標 結束x座標 結束y座標 滑動時長 # 上傳圖片到設備 adb push 文件本地路徑 設備路徑 # 手機下載到PC端 adb pull 文件在設備上的路徑 PC端本地路徑 # 生成當前界面的UI元素樹 adb shell uiautomator dump /data/local/tmp/uidump.xml # 清除應用App緩存數據 adb shell pm clear
須要注意的是,利用 adb shell am 命令打開應用的方式適用於部分不兼容自動化框架的 App。
# 方式一:(適用於大部分應用,可是打不開手淘App) os.popen('adb shell am start -n %s/%s' % (package_name, activity_name)) # 方式二: os.popen('adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n %s/%s' % ( package_name, activity_name)) # 方式三: os.popen('adb shell am start %s/%s' % (package_name, activity_name))
5、元素獲取
元素獲取的方法也有 3 種。
方法一:是直接使用 adb 命令拿到當前界面的 UI 樹,進而查找元素的 ID 或者文本屬性。
方式一隻適合分析簡單的界面,分析複雜的界面元素定位就沒有那麼直觀了。
方式二:使用 Android SDK 自帶的 Monitor 工具。
配置 SDK 環境以後,只須要命令行輸入 Monitor 便可以打開 DDMS。
打開 DDMS 後,點擊左側的 Dump View 按鈕,點擊中間的手機元素,右側就能分析元素的層次結構和元素屬性。
方式三:和方式二類型,用 SDK 自帶的工具 uiautomatorviewer 雙擊後打開。
六、經常使用問題
adb 常見的問題包含:設備找不到或者設備鏈接不上。
請先確認手機開發者模式和 USB 模式開啓,PC 端的 ADB 環境配置成功。
最後,試試斷開全部鏈接或者重啓設備。
# 斷開全部鏈接 adb disconnect # 重啓手機 adb reboot # 查看設備 adb devices
推薦閱讀
閒魚上哪些商品搶手?Python 分析後告訴你
聊聊 Airtest 自動化工具
薅羊毛 | Python 自動化帶你輕鬆賺錢(完結版)
THANDKS-End -