常用的adb流程与命令

常用的adb流程与命令

工作涉及到了Python自动化手机测试…学了一些adb然后以常用的adb使用流程来讲解相关命令。

不管接下来的工作中会使用什么样的自动化测试框架,底层应该都是会使用adb进行控制的,先行学习总结了…

下文所涉及的shell命令以windows为主

adb连接手机

前提:手机开启开发者模式(可以通过连续点击手机中的版本号开启)

然后再到开发者模式中开启USB调试,再通过USB连接电脑

一般这个时候手机会提示是否允许USB调试,手机确认后adb自动建立连接

image-20230921203526705

还有手动连接的connect命令与断开连接的disconnect命令

adb安装apk

adb install [apk path]

image-20230921204618537

如果adb连接了多个设备的情况下,可以使用-s来指定设备id来执行命令

例如,adb -s [设备id] [command]

adb卸载app

adb uninstall [package name]

这个命令涉及到两个方面,一个是shell,另一个是pm

adb shell命令可以进入设备的操作命令界面

Android系统中可以使用pm命令进行相关的包管理

我们想要使用adb进行卸载app需要提供package name

我们获取package name需要进入Android的shell中使用pm来获取包信息

pm list package命令可以查看Android设备中安装的所有包

可以使用pm list package -3命令获取安装的第三方包,快速锁定我们需要的包名

image-20230921205835034

然后就可以通过pm uninstall com.tencent.qqmusic来卸载我刚刚安装的QQ音乐

当然这些命令都可以稍微简化一下,可以不用进入到Android的shell界面

通过adb shell [android shell command]来直接执行命令

例如:adb shell pm list package -3

获取设备的文件

adb pull [android path] [pc path]

image-20230921211822500

推送文件到设备

adb push [file path] [android path]

image-20230921212820924

启动app

adb shell am start [activity]

这个命令涉及到activity,这个是Android开发中的东西

想获取它可以通过三个途径:

  1. adb shell dumpsys activity | [findstr|grep] mFocuse

    这个方式需要先在设备上手动启动app,保证app位于顶端视图

    image-20230921221840355

    此时执行命令,如图所示

    image-20230921222325955

    两个mFocus均可以启动app,命令如下:

    adb shell am start com.netease.cloudmusic/.activity.IconChangeDefaultAlias

    adb shell am start com.netease.cloudmusic/com.netease.cloudmusic.activity.IconChangeDefaultAlias

  2. aapt dump badging [apk path]

    执行该命令会显示出很多信息,过滤掉我们需要的就好了

    image-20230921222803071

    这里我用的QQ音乐的apk演示,再加上QQ音乐的包名即可,同样也可以用aapt获取,findstr package就行

  3. 问开发 问开发 问开发

停止app

adb shell am force-stop [app package name]

例如,adb shell am force-stop com.netease.cloudmusic来关闭网易云音乐

模拟操作

一般的自动化框架会采用元素定位的方式,但底层离不开adb操作

点击操作

adb shell input tap [x] [y]

需要x,y坐标值,我们可以通过开启开发者选项中的指针位置来在设备屏幕上方获取坐标值

image-20230921223550485

输入操作

adb shell input [text or var]

此命令在焦点处输入指定的文本或变量值

模拟系统按键输入

adb shell input keyevent [value]

value值的参考

滑动操作

adb shell input swipe [x1] [y1] [x2] [y2] [time]

提供两组坐标与完成滑动的时间,时间单位为毫秒

按住操作

其实与滑动操作类似,只是两组坐标一致或相似并且完成滑动时间较长


PS:我真的没有转测试或者测开,这是工作涉及工作涉及工作涉及…


常用的adb流程与命令
https://blog.gugu.dev/2024-02-21/常用的adb流程与命令/
作者
MinMin
发布于
2024年2月21日
许可协议