每天一个安卓测试开发小知识之 (六)---常用的adb 命令第四期
本期继续介绍adb命令
- root adb
- 查看app进程id
- adb服务端重启
- 获取当前界面的xml
- adb命令输入text
1. root adb
root的作用是什么 如何进入root 如何退出 什么下才可以root
1.1 adb root 命令的作用
重启
adbd
守护进程(adbd daemon,运行在手机中的进程),使其以 root 权限运行,相当于root状态比非root状态的权限要高,可执行的adb 命令要多
- 普通模式:当你在设备上执行 adb shell 时,你进入的是一个受限的 shell 环境,拥有的是普通用户(通常是 shell)的权限,无法访问系统关键文件和执行特权命令。
- root 模式:执行 adb root 后,adbd 进程本身获得了 root 权限。之后你再执行 adb shell,将会直接获得一个 # 符号的 root shell,拥有系统的最高权限。
1.2 什么情况下才可以进入root
adb root 命令并非在所有设备上都有效。它的成功执行完全取决于设备的ro.debuggable 这个系统属性。
ro.debuggable
属性的获取 可以通过之前介绍的adb shell getprop
查看( 可查看之前文章)
当ro.debuggable
属性的值等于1时才可以执行adb root
命令获取到root
权限
当手机是root
版本 或者userdebug
版本的时候ro.debuggable
属性值才是1, 一般手机都是user
的,所以不能进入rootroot
版本 或者userdebug
版本必须刷指定的系统才能实现user
版本的手机可以通过工具取得了root
权限,这里不具体介绍
1.3 进入root
adb root
当已经是root状态时 执行adb root
1.4 退出root
adb unroot
当已经是非root状态时,执行 adb unroot
2. 查看app进程id
很多情况下,需要获取app的进程id来kil进程或者用来查看进程
adb shell pidof 包名
例如 获取com.android.settings
的进程id,包名的获取可参考包名获取
可以通过 pid
来kill
进程,因为adb
不是root
所以不能kill
掉设置这个进程
可以通过pid
过滤对应app
的日志
3. adb服务端重启
在执行自动化测试中 adb命令会出现卡死的情况,或者第一次执行adb命令需要启动adb server
- 启动adb server
adb start-server
- kill adb server
adb kill-server
有时候需要查看adb server的日志 确认测试中是不是手机离线导致的问题 - linux 或者 mac 系统中 日志保存在
/tmp/adb.***.log
- windows保存在
c盘,用户目录下 文件名 adb_log
,可以直接在C盘下搜索
4. 获取当前界面的xml
有时候我们在做UI自动化时,有些控件找不到时,需要dump下当前页面的xml,来辅助判断
adb shell uiautomator dump /data/local/tmp/text.xml
/data/local/tmp/text.xm
l 是手机中保存xml文件的文件路径,保存完后,可通过adb pull
命令将文件拉到主机中,adb pull命令
5. 输入text
有时候UI界面的元素不好定位,比如输入短信验证码的情况下,难以实现输入文字,就可以考虑通过adb shell命令输入文字
adb shell input text 123
123
是要输入的文字,但是要执行 input text
命令需要打开开发者-USB调试(安全设置),打开开发者模式可参考开发者设置
以小米手机为例,
例如我们将光标放在设置的搜索框中,然后执行 adb shell input text 123
本期的分享就到这里,每天进步一点点!!