如何使用 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. 53.storm简介

    一.简介 1.storm是twitter开源的一个分布式的实时计算系统,用于数据实时分析,持续计算,分布式RPC等等. 官网地址:http://storm-project.net 源码地址:https ...

  2. 转:android studio 一直卡在Gradle:Build Running的解决办法

    在使用AS开发安卓应用程序的时候经常会遇到Gradle build running一直在运行甚至卡死的情况,解决方法如下: 方法1: 1.在C:\User\<用户名>\.gradle 目录 ...

  3. SQL查询排名第二名的信息

    今天看见同学去面试的面试题,查询出某个字段排名第二名的信息,自己就看看 如果是Oracle ,这不就是考察Oracle分页么,以Oracle的emp表为例,根据薪水排名,查询排名第二的员工信息: se ...

  4. Android 开发工具类 14_ JsonTools

    天气 JSON 数据解析 package com.example.weather_json.tools; import java.util.ArrayList; import java.util.Li ...

  5. Python单行注释与多行注释

    >>> print "hello,world"hello,world>>> 2+24#单行注释 """每行代码的后 ...

  6. asterisk与freepbx常用的命令

    asterisk 常用命令: 通过asterisk -r 连接我们的asterisk. 在CLI中常用的命令: sip show peers 显示所有的SIP peers(包括friends) sip ...

  7. Mysql的预编译和批处理

    MySQL的预编译功能 预编译的好处 大家平时都使用过JDBC中的PreparedStatement接口,它有预编译功能.什么是预编译功能呢?它有什么好处呢? 当客户发送一条SQL语句给服务器后,服务 ...

  8. 开启Apache Server Status

    开启Apache Server Status 发布时间:August 1, 2008 分类:Apache <DdZend工具提供下载> <PHP中MD5函数效率> Apache ...

  9. SpringBoot 初接触之 404

    1. 确认输入项目路径是否正确,如:http://localhost:8080/index,这里需要注意的是端口号的查看 2. 确认注解是否用对 在 Controller 层类上面使用的注解是 @Re ...

  10. python学习之参数传递

    ^参数传递分为定义(形参)和调用(实参)两种情况.^ 1. 定义(形参) 默认参数 def func(x, y=None): # 任何时候必须 优先定义 位置参数 # 默认参数和可变参数*args 顺 ...