zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Appium自动化测试第一篇ADB命令使用

adb测试命令自动化 Appium 第一篇 使用
2023-09-11 14:16:28 时间

目录

1.1adb命令介绍

1.2adb环境搭建

1.3adb常用命令

1.3.1adb连接命令

1.3.2adb包管理命令

1.3.3adb文件管理命令

1.3.4adb日志命令

1.3.5adb截图命令

1.3.6adb 系统命令

1.4确认包名和Activity值


1.1adb命令介绍

     adb的全称是Android Debug Bridge,它是一种命令行工具,在Android设置与PC之间起到调试桥梁的作用,方便用户通过pc直接操作Android设置。

    手机开启USB调试,我这里使用的华为手机,在设置关于手机->版本号 连续点击几次  开启开发者模式,在系统和更新里找到 开发人员选项,开启USB调试。

1.2adb环境搭建

      已经下载安装配置好Android SDK的设备,adb工具位于Android SDK安装目录下的platform-tools文件夹下,

 adb 默认端口5037,如果端口被占用会起到出差,在windows下使用下面命令解决该问题·

#查看端口是否被占用
netstat -ano | findstr "5037"
#如果被占用  查看占用端口的应用 
tasklist | findstr "端口pid"
#杀死pid进程
taskkill -f -pid 964 
#开启adb服务
adb start-server 
#关闭服务
adb kill-server

1.3adb常用命令

1.3.1adb连接命令

adb devices
C:\Windows\system32>adb devices                                                                                         List of devices attached                                                                                                8KE5T19711002800        device   
8KE5T19711002800 是序列号   device  是状态  device表示有模拟器/设备运行   offline表示没有与adb相连接的设备   no device 表示没有设备运行  

查看设备详细信息
C:\Windows\system32>adb devices -l                                                                                      List of devices attached                                                                                                8KE5T19711002800       device product:ELE-AL00 
model:ELE_AL00 device:HWELE transport_id:2  
 
ELE-AL00:设备名称  


adb forward  要发布端口
adb forward tcp:#### tcp:####
用户可以设置任意端口,作为主机向模拟器或设置的请求端口,一个设备的某一个特定主机端口向另一个端口转发请求。
adb forward tcp:5555 tcp:8000
表示发往5555端口的数据都会被转发到8000端口上


adb kill-server 
停止adb服务

adb  start-server
起到adb服务

adb连接命令
adb connect <host>[:<port>] 
如果在测试过程中pc的USB端口有限,不可能一直使用USB模拟测试ANdroid设备,可以通过WIFI的形式完成PC和Android设置的连接
前提条件是PC和手机都跟同一个WIfi连接 ,并且手机通过USB和PC相连

步骤:
输入 adb devices 验证pc同USB和手机相连接
在tcp模式下重启adb端口5555
adb tcp 5555

查看手机Ip地址 在关于手机->状态信息->IP地址里   查看手机ip地址

连接手机Ip地址
adb  connect ip地址
输入adb devices验证手机是否和pc连接
通过以下命令断开连接
adb  disconnect ip地址


                                   

具体命令运行如下:

 

1.3.2adb包管理命令

要安装软件,命令格式形式如下

adb install <apk文件路径>

adb install apk文件路径
提示success说明安装成功

adb uninstall apk
adb uninstall -k 软件包名
-k表示卸载软件但是保留配置和缓存文件 如卸载com.baidu.input_miv6包
adb uninstall com.baidu.input_miv6
success



指定设备安装
adb  -s 127.0.0.1:62001 install  "应用"
#覆盖安装
adb install -r  "应用"


软件包名获取
adb shell dumpsys window w |findstr \/ |findstr name= 
adb shell dumpsys window w |findstr \/ |findstr name="com.xueqiu" 
adb logcat| findstr -i displayed  
adb logcat | grep -i displayed
appt dump badging mobike.apk | grep launchable-activity
apkanalyzer 最新版本的sdk才有
adb shell pm list packages  com.xueqiu.android


获取当前界面元素  adb shell dumpsys  activity top
获取任务列表  adb shell dumpsys  activity activities
adb shell dumpsys  packages  com.xueqiu.android

启动应用
adb shell am start -W -n com.xueqiu.android/.view.WelcomeActivityAlias-Summer&passwd
   

adb shell pm

命令pm的全称是package manager ,可以使用Pm命令执行应用的安装并查询一些安装包的常用信息

列出所有安装包信息

adb shell pm list package 

其中参数描述如下:

-f :显示每个包的位置

-d:使用过滤器,只显示禁用应用的包名

-e:使用过滤器,只显示可用应用的包名

-d:使用过滤器,只显示系统应用的包名

-3:使用过滤器,只显示第三方应用的包名

-i:查看应用的安装者

查看第三方应用包名

adb shell pm list package  -3

 

1.3.3adb文件管理命令

要从计算机上发送文件到设备上,命令

adb push <本地路径> <远程路径>

adb push F:\文件名    /data/local/tmp

 

adb pull <远程路径>  <本地路径>

从远程设备下载文件到电脑

adb push /data/local/tmp/文件名   F:\

 

adb push 文件到手机出错:adb: error: failed to copy 'ContactManager.apk' to 'system/ContactManager.apk': remote couldn't create file: Read-only file system

这是因为需要root权限 需要adb root 

点击此处下载:https://pan.baidu.com/s/1hr6al4S

 

 

1.3.4adb日志命令

要查看日志,使用命令如下:

[adb] logcat [<option>] .......[<filter-spec>].....

adb logcat 

其中每一行首字母I,E表示日志级别  ,"/"与":"之间内容表示消息来源  常见日志级别包括 V,D,I,W,E 如下:

adb logcat日志的级别
日志级别描述
V表示冗余级别日志信息
D表示调试级别的日志信息
I表示信息级别的日志信息
W表示警告级别的日志信息
E表示错误级别的日志信息

其中,由上到下级别越来越高,可以加上过滤器对于输出日志进行过滤,过于过滤器设置级别的都会显示出来

设置过滤:

adb logcat *:I

如果日志太多,使用以下命令,清除所有以前的日志

adb logcat -c

当做Android前端性能测试的时候,为了获取应用的启动时间,可以打开APP,并执行如下命令:

adb logcat -d -s ActivityManager | findstr "Displated"

 

 adb logcat -d 命令,显示的日志是刚刚操作那段时间内的日志,并且会自动退出log模式

adb logcat -s XXX命令是设置过滤的,如果想查消息来源为ActivityManager的日志,就直接用ActivityManager替换最后的XXX

-c表示清空日志信息,然后使用命令

adb logcat ActivityManage:I *:s  获取Tag为ActivityManager且输出级别大于的日志。

adb shell dumpsys

 Android系统是基于Linux系统开发的,支持常见的Lniux命令,可以通过adb shell进入设备的shell环境。命令格式如下:

adb shell 

adb shell [command]

 

检查内存是否存在泄漏的情况,需要获取系统的内存值:

adb shell dumpsys meminfo  <packagename>

packagename为待测APK的包名,以百度APK为例:

adb shell dumpsys meminfo  com.baidu.searchbox

查看cpu占用率是否过高,需要获取CPu信息

adb shell dumpsys cpuinfo  com.baidu.searchbox

关注前台耗电量和后台耗电量,使用以下命令:

adb  shell  dumpsys battery

dumpsys 是Android手机自带的调试工具,主要是用于转存当前android系统的一些信息。

 

1.3.5adb截图命令

截图命令如下:

adb  shell screencap

获取当前屏幕,并保存到指定目录下:

adb  shell screencap  /scard/screen.png

将截图上传到电脑

adb pull /scard/screen.png  F:\

 

1.3.6adb 系统命令

adb get-product 获取设置的ID和序列号

adb get-serialno 获取设备序列号

 

adb shell am 

am全名称是activity manager 用来执行不同系统操作,可以通过此命令启动Android的Activity,Service和BroadCast等组件

adb shell am start -a android.intent.action.CALL -d tel:10086

start :am的子命令,因为是子命令所有前面加上-,它启动一个操作,后面为待启动的包名

-d :表示要操作的数据

例如使用 am 打开网页

adb shell am start -a android.intent.action.UIEW -d http://www.ieyeshot.com

在测试过程中,模拟电量低的情况,发出这个命令,手机电量信息迅速变为3%,等一段时间可以恢复正常,

adb shell am broadcast -a android.intent.action.BATTERY_CHANGED --ei "level" 3 --ei "scale" 100

 

1.4确认包名和Activity值

  • 只有源码情况:

         直接打开AndroidManifest.xml文件,找到"package="就可以找到包名,找到包含android.intent.action.MAIN和android.inten.category.LAUNCHER的Activity

  • 只有apk的情况:

利用aapt子命令查看包名和Activity名

aapt位于SDK的build-tools目录下。

切换到android-sdk的build-tools目录下,输入下面命令:

aapt dump badging shoujibaidu_3827304.apk | findstr package  获取包名

aapt dump badging shoujibaidu_3827304.apk | findstr activity 获取activity名

badging 表示显示APK包中的label和icon

  • APK已经安装在手机上:

使用logcat

清除logcat内容  adb logcat -c

启动logcat 使用命令,adb logcat ActivityManager:I *:s

启动要查看应用程序,查看包名和Main Activity值

 

使用dumpsys查看

启动要查看的程序

在命令行输入以下内容

adb shell dumpsys window w |findstr \/ |findstr name=         

 

C:\Users\Administrator>adb shell am start -W -n com.xueqiu.android/.view.WelcomeActivityAlias -S
Stopping: com.xueqiu.android
Starting: Intent { cmp=com.xueqiu.android/.view.WelcomeActivityAlias }
Status: ok
LaunchState: COLD
Activity: com.xueqiu.android/.view.WelcomeActivityAlias
TotalTime: 422
WaitTime: 428
Complete

 

adb shell am start -W -n com.xueqiu.android/.view.WelcomeActivityAlias -S  打开应用

adb logcat | grep -i displayed
adb shell dumpsys activity top
adb shell dumpsys activity activities
adb dump badging xueqiu.apk | grep launchable-activity