python腳本經過adb控制手機操做

一些adb命令

查看應用列表

adb shell pm list packages [-?] [--user USER_ID] [FILTER]html

參數 顯示列表
全部應用
-f 顯示應用關聯的apk文件
-d 只顯示disabled的應用
-e 只顯示 enable的應用
-s 只顯示系統應用
-3 只顯示第三方應用
-i 只顯示應用的installer
-u 包含已卸載應用
T:string 包名包含T的應用

安裝應用

adb install [?] [apk-file]python

參數 含義
-l 將應用安裝到保護目錄/mnt/esec
-r 容許覆蓋安裝
-t 容許安裝AndroidManifest裏application指定android:testonly=「true」的應用
-s 將應用安裝到sdcard
-d 容許降級安裝
-g 授予全部運行時權限

運行後會有返回信息android

卸載應用

adb uninstall [-k] [package-name]shell

-k可選,表示卸載應用但保留數據和緩存目錄數組

查看前臺activity

adb shell dumpsys activity activities瀏覽器

查看應用詳細信息

adb shell dumpsys package [package-name]緩存

與應用交互

與應用交互主要是使用 am 命令,經常使用的命令以下:app

command 用途
start [options] <intent> 啓動<intent>指定的activity
Startservice [options] <intent> 啓動<intent>指定的service
broadcast [options] <intent> 發送<intent>指定的廣播
force-stop [package-name] 中止相關進程

用於決定 intent 對象的選項以下:ui

參數 含義
-a 指定 action,好比 android.intent.action.VIEW
-c 指定 category,好比 android.intent.category.APP_CONTACTS
-n 指定完整 component 名,用於明確指定啓動哪一個 Activity

<intent> 裏還能帶數據,就像寫代碼時的 Bundle 同樣:code

參數 含義
--esn<extra-key> null 值(只有 key 名)
-e|--es<extra-key> <extra-string-value> string 值
--ez<extra-key> <extra-boolean-value> boolean 值
--ei<extra-key> <extra-int-value> integer 值
--el<extra-key> <extra-long-value> long 值
--ef<extra-key> <extra-float-value> float 值
--eu<extra-key> <extra-uri-value> URI
--ecn<extra-key> <extra-component-name-value> component name
--eia <extra-key><extra-int-value>[,<extra-int-value...>] integer 數組
--ela <extra-key> <extra-long-value>[,<extra-long-value...>] long 數組

模擬點擊

Usage: input [<source>] <command> [<arg...>]

The sources are: dpad keyboard mouse touchpad gamepad touchnavigation joystick touchscreen stylus trackball

The commands and default sources are: text <string> (Default: touchscreen) keyevent [--longpress] <key code number or name> ... (Default: keyboard) tap <x> <y> (Default: touchscreen) swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen) draganddrop <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen) press (Default: trackball) roll <dx> <dy> (Default: trackball)

使用 adb shell input keyevent 命令,不一樣的 keycode 能實現不一樣的功能,完整的 keycode 列表詳見 KeyEvent,部分:

keycode 含義
3 HOME 鍵
4 返回鍵
5 打開撥號應用
6 掛斷電話
24 增長音量
25 下降音量
26 電源鍵
27 拍照(須要在相機應用裏)
64 打開瀏覽器
82 菜單鍵
85 播放/暫停
86 中止播放
87 播放下一首
88 播放上一首
122 移動光標到行首或列表頂部
123 移動光標到行末或列表底部
126 恢復播放
127 暫停播放
164 靜音
176 打開系統設置
187 切換應用
207 打開聯繫人
208 打開日曆
209 打開音樂
210 打開計算器
220 下降屏幕亮度
221 提升屏幕亮度
223 系統休眠
224 點亮屏幕
231 打開語音助手
276 若是沒有 wakelock 則讓系統休眠

獲取ui樹

adb shell uiautomator dump --compressed filepath(手機上保存的目錄)

將ui樹拉取到電腦

adb pull /data/local/tmp/uidump.xml filepath(電腦上保存的目錄)

在python上調用adb

import os

os.popen("adb shell uiautomator dump --compressed 'filepath'") 便可調用,還能夠.read獲取返回值

經過對從手機拉取的ui樹進行解析,能夠獲取當前頁面的全部控件位置,能夠自動的進行一些例如點擊滑動等重複性的工做.

相關文章
相關標籤/搜索