如何使用 adb 命令实现自动化测试

一、前提:

1.打开手机调试模式,确保手机已正常连接电脑,可在电脑上通过adb devices命令查看,结果如下说明连接成功: 
List of devices attached
90xxxxc9 device
2.确保电脑上安装sdk等相关软件,可正常使用adb命令和aapt命令

3.adb 车看设备品牌、型号、机型等信息

adb shell getprop ro.product.model

4.过滤 日志

输出包含xxxx关键字的日志到D盘根目录的log.txt文件夹没有则创建

adb logcat | find “xxxx”  >D:log.txt

输出指定app的日志到D盘根目录的log.txt文件夹没有则创建

adb logcat find “包名” >D:log.txt

输出指定级别的日志到D盘根目录的log.txt文件夹没有则创建

adb logcat *:E > D:log.txt

** Log 优先级是下面的字符,顺序是从低到高 **:

  • V — 明细 (最低优先级)
  • D — 调试
  • I — 信息
  • W — 警告
  • E — 错误
  • F — 严重错误
  • S — 无记载 (最高优先级,没有什么会被记载)

选项解析 :

"-s"选项 : 设置输出日志的标签, 只显示该标签的日志;

"-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;

"-r"选项 : 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;

"-n"选项 : 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;

"-v"选项 : 设置日志的输出格式, 注意只能设置一项;

"-c"选项 : 清空所有的日志缓存信息;

"-d"选项 : 将缓存的日志输出到屏幕上, 并且不会阻塞;

"-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞;

"-g"选项 : 查看日志缓冲区信息;

"-b"选项 : 加载一个日志缓冲区, 默认是 main, 下面详解;

"-B"选项 : 以二进制形式输出日志;

输出指定选项的日志到D盘根目录的log.txt文件夹没有则创建

adb logcat -s unity >D:log.txt 

二、自动化测试辅助命令

1.获取要测试的apk包的相关信息,比如
aapt dump badging

2.对某个手机执行卸载、安装及启动应用的操作
adb uninstall 
adb install 
adb shell monkey -p -v 1

3.获取手机所有控件信息,为后面执行操作做准备
adb shell uiautomator dump /sdcard/ui.xml

4.实现对具体坐标的点击操作
adb shell input tap x y

5.获取手机应用执行时的logcat日志:
adb logcat | grep adb shell ps | grep <package> | cut -c10-15

adb logcat | find "Unity" > log.txt

6.获取应用执行时的CPU、内存等相关信息
adb shell top -n -1 | grep package
adb shell dumpsys meminfo package

三、各种辅助命令的详解

1.aapt dump badging 
查看apk包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息,效果图如下:

2.adb shell uiautomator dump /sdcard/ui.xml 
可以获取手机屏幕上当前所有控件的信息并保存在sdcard下ui.xml文件里面,之后可通过解析ui.xml文件就可以拿到想要的控件信息,比如拿到坐标就可以做相关的点击操作

3.adb shell input tap x y
此命令模拟的是点击屏幕的事件,x和y坐标对应的是真实的屏幕分辨率,比如手机屏幕分辨率为1920x1080,你想点击中间位置,假设手机横屏,则(x,y)为(960,540)

4.adb logcat | grep adb shell ps | grep <package> | cut -c10-15
首先adb shell ps | grep | cut -c10-15命令获取的是你的应用执行时对应的进程id,然后通过adb logcat来抓取对应进程id的日志

5.adb shell top -n -1 | grep package
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源使用情况。

6.adb shell dumpsys meminfo package

内存说明:
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS,此条命令获取的是PSS信息

如何使用 adb 命令实现自动化测试的更多相关文章

  1. Appium自动化测试教程-自学网-adb命令

    adb命令: adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信.它可为各种设备操作提供便利,如安装和调试应用. T ...

  2. python学习之——调用adb命令完成移动端界面测试

    实现原理 Hierarchy Viewer:获得当前手机实时的UI信息,方便用于手机的自动化测试: python中的subprocess.Popen():调用系统命令: uiautomator工具:获 ...

  3. 常用的adb命令

    在平时的工作中,会经常用到adb命令,在这里稍微整理了一下. 一.概要 1.什么是adb? adb全称为Android Debug Bridge,就是起到调试桥的作用.顾名思义,adb就是一个debu ...

  4. Android 常用 adb 命令总结

    Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命 ...

  5. 【转】Android 常用 adb 命令总结

    原文地址:http://testerhome.com/topics/2565 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Andr ...

  6. Android 常用 adb 命令总结【转】

    原文链接 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中 ...

  7. 一些实用的adb命令

    一.前提: 1.打开手机调试模式,确保手机已正常连接电脑,可在电脑上通过adb devices命令查看,结果如下说明连接成功: List of devices attached90xxxxc9 dev ...

  8. adb命令(一)

    针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中. And ...

  9. [adb 命令学习篇] adb 命令总结

    https://testerhome.com/topics/2565 Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb ...

随机推荐

  1. linux 从0开始

    网络配置: http://blog.51yip.com/linux/1120.html 网络配置为自动获取 vi命令参考: http://c.biancheng.net/cpp/html/2735.h ...

  2. Hadoop简介与伪分布式搭建—DAY01

    一.  Hadoop的一些相关概念及思想 1.hadoop的核心组成: (1)hdfs分布式文件系统 (2)mapreduce 分布式批处理运算框架 (3)yarn 分布式资源调度系统 2.hadoo ...

  3. Redis客户端使用

    http://wenku.baidu.com/view/6ccd650af12d2af90242e63d.html 一.下载jedis 代码 jedis 代码地址:https://github.com ...

  4. ERROR:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing 解决方案

    我尝试的过程如下 1. 时间没有同步 用date命令看一下每个机器 如果时间差距大 说明确实有问题 ** 配置时间服务器             ** 检查时区                 $ d ...

  5. Linux 系统计算文件夹下文件数量数目

    查看某目录下文件的个数(未包括子目录) ls -l |grep "^-"|wc -l 或 find ./company -type f | wc -l 查看某目录下文件的个数,包括 ...

  6. Android Studio打开非本机项目比较慢的问题。

    使用Android Studio打开其他项目的时候,如果使用的AS版本.gradle不同的话,会在打开项目的时候下载gradle版本,网速不好的情况下回非常的慢. 解决方案: 1.将本机创建的AS项目 ...

  7. Python -- Gui编程 -- Tkinter的使用 -- 对话框消息框

    1.消息框 tkMessageBox.py import tkinter from tkinter import messagebox def cmd(): global n global butto ...

  8. 数据库学习---SQL基础(二)

    数据库学习---SQL基础(一) 数据库学习---SQL基础(二) 数据库学习---SQL基础(三) 上篇复习的sql的增删改查,and ,or ,>=, <=,!=等逻辑运算符,还有in ...

  9. 微信公众号H5支付

    微信支付说明1.统一下单接口 统一支付接口: url: https://api.mch.weixin.qq.com/pay/unifiedorder 目的:通过此接口来创建预支付订单,获取订单支付需要 ...

  10. 用java实现一个简易编译器-语法解析

    语法和解析树: 举个例子看看,语法解析的过程.句子:“我看到刘德华唱歌”.在计算机里,怎么用程序解析它呢.从语法上看,句子的组成是由主语,动词,和谓语从句组成,主语是“我”,动词是“看见”, 谓语从句 ...