

本期继续介绍adb命令:
root adb
查看app进程id
adb服务端重启
获取当前界面的xml
adb命令输入text
root的作用是什么 如何进入root 如何退出 什么下才可以root。
重启 adbd 守护进程(adbd daemon,运行在手机中的进程),使其以 root 权限运行,相当于root状态比非root状态的权限要高,可执行的adb 命令要多。
普通模式:当你在设备上执行 adb shell 时,你进入的是一个受限的 shell 环境,拥有的是普通用户(通常是 shell)的权限,无法访问系统关键文件和执行特权命令。
root 模式:执行 adb root 后,adbd 进程本身获得了 root 权限。之后你再执行 adb shell,将会直接获得一个 # 符号的 root shell,拥有系统的最高权限。
adb root 命令并非在所有设备上都有效。它的成功执行完全取决于设备的ro.debuggable 这个系统属性。
ro.debuggable 属性的获取 可以通过之前介绍的 adb shell getprop 查看(每天一个安卓测试开发小知识之“adb shell 以及常用的adb shell命令”)。

当ro.debuggable 属性的值等于1时才可以执行adb root命令获取到root权限 当手机是root版本或者userdebug版本的时候ro.debuggable属性值才是1, 一般手机都是user的,所以不能进入root。
root版本 或者userdebug版本必须刷指定的系统才能实现。
user版本的手机可以通过工具取得了root权限,这里不具体介绍。
adb root

已经是root状态时 执行adb root

adb unroot

已经是非root状态时,执行 adb unroot

很多情况下,需要获取app的进程id来kil进程或者用来查看进程。
adb shell pidof 包名 例如 获取com.android.settings 的进程id,包名的获取可参考包名获取

以通过 pid来kill进程,因为adb不是root所以不能kill掉设置这个进程

以通过pid过滤对应app的日志

在执行自动化测试中 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盘下搜索
有时候我们在做UI自动化时,有些控件找不到时,需要dump下当前页面的xml,来辅助判断。
adb shell uiautomator dump /data/local/tmp/text.xml/data/local/tmp/text.xml 是手机中保存xml文件的文件路径,保存完后,可通过adb pull命令将文件拉到主机中,adb pull命令。
有时候UI界面的元素不好定位,比如输入短信验证码的情况下,难以实现输入文字,就可以考虑通过adb shell命令输入文字。
adb shell input text 123123 是要输入的文字,但是要执行 input text 命令需要打开开发者-USB调试(安全设置),打开开发者模式可参考开发者设置 以小米手机为例。

例如我们将光标放在设置的搜索框中,然后执行 adb shell input text 123。


链接:https://juejin.cn/post/7548656612325031990
本文为51Testing经授权转载,转载文章所包含的文字来源于作者。如因内容或版权等问题,请联系51Testing进行删除


