ADB自动化测试框架

news2024/12/28 12:59:13

一、介绍

adb的全称为Android Debug Bridge,就是起到调试桥的作用,利用adb工具的前提是在手机上打开usb调试,然后通过数据线连接电脑。在电脑上使用命令模式来操作手机:重启、进入recovery、进入fastboot、推送文件功能等。简单来说,adb就是连接Android手机和pc端的桥梁,让用户在电脑上对手机进行全面操作。

二、安装及配置

 下载的adb tools,地址:Android SDK - Download ,解压放D盘;配置环境变量,在Path中添加刚刚adb tools中的路径 ;在命令行窗口,输入adb,出现信息证明已成功。

三、常用命令

带有shell的表示Linux本身的操作系统的命令,不带shell 的是adb本身的命令; 

基础命令:
0、adb connect IP:Port  连接设备(-s:可指定连接设别)
1、adb devices 查看连接的手机设备
2、adb install packsge(包路径) 安装包
3、adb install -r packages(保留数据及缓存文件安装新包)
4、adb uninstall package (卸载包)
5、adb kill-server 关闭adb服务
6、adb start-server 启动adb服务
7、adb shell 进入shell ,进入shell后可执行命令。
7、adb shell pm list packages 查看手机里面所有包名
8、adb shell pm list packages -3查看手机里面所有第三方包名
9、adb shell /system/bin/screencap -p /sdcard/xx.png 截频并保存文件在手机上为xx.Png
10、adb pull /sdcard/xx.png D:/xx.png 将手机xx.png文件保存到D盘文件下 ,下载文件
11、adb push D:/xx.text /adcard/xx.text 将电脑文件导入手机 ,上传文件
12、adb shell pm clear com.ablesky.ui.activity 清除缓存数据
13、adb shell am start -n com.ablesky.ui.activity/com.ablesky.activity.SplashActivity 启动程序
14、adb shell am force-stop com.ablesky.simpleness.activity 强制停止运行程序
15、adb logcat 查看日志
16、adb logcat > D:\log.txt 将日志打印到电脑上
17、netstat -aon|findstr "5037" 查看被占用端口对应的PID
18、 tasklist /fi “PID eq PID号” 查看端口号对应的进程
19、 taskkill /pid 2027 /f  杀掉某进程
20、adb shell monkey -p 包名 100    指定APP产生随机事件100次 
21、adb shell monkey -p 包名 -v -v 100    指定APP产生随机事件100次并发送详细的activity信息  
22、adb root 获取root权限
23、adb remount 获取system文件的读写权限
24、shell rm *.apk 删除系统应用
25、adb install d:\\xxx.apk 通过命令安装安卓应用
26、adb shell dumpsys activity top | find "ACTIVITY"     查看启动的app的包名
27、adb shell dumpsys activity activities | findstr "Run"    查看所有启动的应用的包名
28、adb shell dumpsys window w |findstr \/ |findstr name=    查看当前启动应用的包名
29、adb -s 127.0.0.1:62001 shell pm list package  多台设备,需指定设备名;查看所有的按照应用包名
30、adb shell am start -n 主包名/包名+类名     启动应用程序
31、adb shell am force-stop 主包名       强制关闭程序
32、adb shell ps | findstr browser     ps 是查看当前启动的成效,管道输入,变成查看browse这程序是否在运行
 
 
 
进阶命令:
1、获取手机系统信息( CPU,厂商名称等)
adb shell "cat /system/build.prop | grep "product""
2、获取手机系统版本
adb shell getprop ro.build.version.release
3、获取手机系统api版本
adb shell getprop ro.build.version.sdk
4、获取手机设备型号
adb -d shell getprop ro.product.model
5、获取手机厂商名称
adb -d shell getprop ro.product.brand
6、获取手机的序列号
有两种方式
1、  adb get-serialno
2、  adb shell getprop ro.serialno
7、获取手机的IMEI
有三种方式,由于手机和系统的限制,不一定获取到
1、 adb shell dumpsys iphonesubinfo其中Device ID即为IMEI号
2、 adb shell getprop gsm.baseband.imei
3、 service call iphonesubinfo 1
此种方式,需要自己处理获取的信息得到
8、获取手机mac地址
adb shell cat /sys/class/net/wlan0/address
9、获取手机内存信息
adb shell cat /proc/meminfo
10、获取手机存储信息
adb shell df
获取手机内部存储信息:
魅族手机: adb shell df /mnt/shell/emulated
其他: adb shell df /data
获取sdcard存储信息:
adb shell df /storage/sdcard
 
11、获取手机分辨率  ,竖线 是管道,前面语句的输出,当做后面语句的输入;过滤某条命令的输出
adb shell "dumpsys window | grep mUnrestrictedScreen"
12、获取手机物理密度
adb shell wm density
13、获取手机包名
1.查看指定apk的包名:aapt dump badging +包的全路径
2.查看所有apk包名:adb shell pm list package -f

 测试常用

#查看当前界面的app的包名
adb shell dumpsys window windows | findstr mFocusedApp
 
#查看启动的app的包名
adb shell dumpsys activity top | find "ACTIVITY"
 
#查看所有启动的应用的包名
adb shell dumpsys activity activities | findstr "Run"
 
#查看当前启动应用的包名
adb shell dumpsys window w |findstr \/ |findstr name=
 
#通过应用查看包名
aapt dump badging D:\test\xxx.apk(APK的全名)
 
#查看电池状况
adb shell dumpsys battery
 
#查看分辨率
adb shell wm size
 
#查看屏幕密度
adb shell wm density
 
#查看显示屏参数
adb shell dumpsys window displays
 
#查看IMEI
adb shell dumpsys iphonesubinfo    
 

四、链接设备

 USB线连接,让安卓设备进入调试模式:开发者模式->打开USB调试;PC通过USB线连接安卓设备,进入window终端,输入adb devices:(注意:夜神模拟器可能回报 doesn't match this client (41)的错;主要是SDK版本不匹配;需要:把AndroidSDK\platform-tools下的adb.exe复制到夜神模拟器bin路径下,重命名为nox_adb.exe; 重启夜神模拟器即可。)

五、input 事件

 input可以用来模拟各种输入设备的输入操作。      

输入文本:模拟输入文本text ,主要用于在输入框输入内容,输入前提是获得焦点;空格、&、‘’ 等特殊字符无法直接输入,要输入只能使用keywvent ;输入过程中左右移动、删除等都要使用keyevent。

adb shell input text  helloworld

 模拟按键:keyevent,主要用于模拟键盘输入,因此是在用键盘的地方才用得到。

#通过键值模拟按键操作:模拟按back键
adb shell input keyevent 4
或 adb shell input keyevent KEYCODE_BACK
adb shell input keyevent 26 # 电源键
adb shell input keyevent 82 # 菜单键
adb shell input keyevent 3 # HOME 键
adb shell input keyevent 4 # 返回键
adb shell input keyevent 24 # 音量+
adb shell input keyevent 25 # 音量-
adb shell input keyevent 164 # 静音 
adb shell input keyevent 85 # 播放/暂停
adb shell input keyevent 86 # 停止播放
adb shell input keyevent 87 # 播放下一首
adb shell input keyevent 88 # 播放上一首
adb shell input keyevent 126 # 恢复播放
adb shell input keyevent 127 # 暂停播放

  点击tap:用于模拟手指在屏幕的轻触点击

#通过坐标模拟点击操作:点击横坐标300纵坐标500的点
adb shell input tap 300 500

其他:

#通过坐标模拟滑动操作:从坐标(200,200)滑动到(300,300),滑动时间100ms
adb shell input swipe 200 200 300 300 100
 
#通过坐标模拟拖动操作:从坐标(100,200)拖动到(300,400),滑动时间2000ms
adb shell input draganddrop 100 200 300 400 2000
 
#通过坐标模拟长按操作:从坐标(200,300)的点滑到(400,500),滑动时间2000ms,由于划动距离短,在一个图标之内则主观显示为长按操作
adb shell input swipe 200 300 400 500 2000
 
#通过坐标/键值模拟同时按下两个键,用and连接:电源键亮屏并点击菜单
adb shell input keyevent KEYCODE_POWER and KEYCODE_MENU
 
 
#获取当前页面的控件信息文件,可用于查找元素的属性;生成的是 xml文件
adb shell uiautomator dump

六、案例实战

七、os模块

 os 指operate system,os模块是python标准库中的一个用于访问操作系统功能的模块,使用os模块中提供的接口,可以实现跨平台访问。通用操作:一、获取平台信息,二、对目录操作,三、判断操作。在测试中,使用最多的是 os.system(cmd) 方法,通过传入cmd 命令,相当于直接在命令行输入命令。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/721524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Intellij IDEA 初学入门图文教程(八) —— IDEA 在提交代码时 Performing Code Analysis 卡死

在使用 IDEA 开发过程中,提交代码时常常会在碰到代码中的 JS 文件时卡死,进度框上显示 Performing Code Analysis,如图: 原因是 IDEA 工具默认提交代码时,分析代码功能是打开的,需要通过配置关闭下就可以了…

Linux高性能网络编程:TCP底层的收发过程

今天探索高性能网络编程,但是我觉得在谈系统API之前可以先讲一些Linux底层的收发包过程,如下这是一个简单的socket编程代码: int main() {... fd socket(AF_INET, SOCKET_STREAM, 0);bind(fd, ...);listen(fd, ...);// 如何建立连接...afd …

冒泡排序法(优化与实例演示)

冒泡排序法 冒泡排序法基本介绍 冒泡排序是一种简单而经典的排序算法,它的原理是通过不断比较相邻元素的大小并交换位置,将较大(或较小)的元素逐渐“冒泡”到数组的末尾。这个过程持续进行多轮,直到整个数组按照顺序…

【Zabbix 6.0 监控系统安装和部署】

目录 一、Zabbix 介绍1、zabbix 是什么?2、zabbix 监控原理(重点)3、Zabbix 6.0 新特性4、Zabbix 6.0 功能组件1、Zabbix Server2、数据库3、Web 界面4、Zabbix Agent5、Zabbix Proxy6、Java Gateway 二、Zabbix 6.0 部署1、部署 zabbix 服务…

idea goland 插件 struct to struct

go-struct-to-struct idea goland 插件。实现自动生成 struct 间 转换代码。 https://plugins.jetbrains.com/plugin/22196-struct-to-struct/ IntelliJ plugin that Automatically generate two struct transformations through function declarations Usage define func …

【怎么实现多组输入之EOF】

C语言怎么实现多组输入之EOF C语言之EOF介绍1、什么是EOF?2、EOF的用法3、EOF的扩展3.1、scanf返回值之EOF3.2、scanf函数的返回值有以下几种情况 4、如何是实现多组输入?4.1、多组输入---- 常规写法例程14.2、多组输入---- 实现多组输入的打印例程24.3、…

不想被卷的程序员们,应该学什么?

我真的好像感慨一下,这个世界真的给计算机应届生留活路了吗? 看着周围的同学,打算搞前端、JAVA、C、C的,一个两个去跑去应聘。你以为是00后整治职场? 真相是主打一个卑微:现阶段以学习为主(工…

探寻日本区块链游戏的未来潜力

日本的区块链游戏 日本是全球范围内游戏市场人均利润最高的国家之一。其中,《My Crypto Heroes》的首次公售金额达到了 16,000 ETH。 关键要点: 日本具有强大的游戏基础,使其成为加密游戏发展的理想地区。 日本流行的加密货币游戏包括《My…

Python中jsonpath库使用,及与xpath语法区别

jsonpath库使用 pip install jsonpath 基本语法 JSONPath语法元素和对应XPath元素的对比

Work20230705

//main.c #include "uart4.h" extern void printf(const char *fmt, ...); void delay_ms(int ms) {int i,j;for(i 0; i < ms;i)for (j 0; j < 1800; j); }int main() {while(1){//将获取到的字符1发送到终端//hal_put_char(hal_get_char()1);hal_put_string…

POSTGRESQL SQL 执行用 IN 还是 EXISTS 还是 ANY

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到3群&#xff08;共…

【后端面经-计算机基础】HTTP和TCP的区别

【后端面经-计算机基础】HTTP和TCP的区别 文章目录 【后端面经-计算机基础】HTTP和TCP的区别1. OSI七层模型和相关协议2. TCP协议2.1 特点&#xff1a;2.2 报文格式2.3 三次握手和四次挥手 3. HTTP协议3.1 特点3.2 报文格式3.2 https和http 4. HTTP vs TCP5. 面试模拟参考资料 …

全网最牛,python接口自动化测试-接口sign签名(实战撸码)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 一般公司对外的接…

groupkfold 报错:raise keyerror(f“{not foud} not in index“)

【1】使用groupkfold 的时候出现以上报错&#xff1a;索引错误&#xff0c;groups的索引和x y 的不对应 【2】源代码&#xff1a; 【3】进行修改&#xff1a; 可以成功索引&#xff01;&#xff01;&#xff01;

tomcat下上传html

html 最基本结构服务器xshelltomcat 下载是否可以访问到服务器上传html html 最基本结构 .html 后缀名 <!DOCTYPE HTML> <html><head><meta charset"utf-8"> <title>2306</title></head><body>大家好&#xff01;…

C++图形开发(7):能进行抛物线运动且触墙能反弹的小球

今天来实现一下触墙能反弹的小球、 我们之前所实现的都只是小球的上下&#xff0c;也就是y轴方向的运动&#xff08;详见&#xff1a;C图形开发&#xff08;6&#xff09;&#xff1a;落下后能弹起的小球&#xff09;&#xff0c;那么要使小球能够呈抛物线状运动&#xff0c;我…

Failed to start connector [Connector[HTTP/1.1-8080]]

1、解决Web server failed to start. Port 8080 was already in use 2、SpringBoot启动报错:“Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug’ enabled.” 3、Failed to start end point associated with Proto…

015-从零搭建微服务-远程调用(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…

如何利用Spine制作简单的2D骨骼动画

在2D游戏中&#xff0c;我们经常看到各种各样的角色动画。动画能给游戏带来生机和灵气。创作一段美妙的动画&#xff0c;不仅需要强大的软件工具&#xff0c;更需要一套完善的工作流程。 Spine就是一款针对游戏开发的2D骨骼动画编辑工具。Spine 可以提供更高效和简洁 的工作流…

【STM32智能车】寻迹模块

【STM32智能车】寻迹模块 寻迹模块 传感器原理接线说明 智能车寻迹是一种机器人控制技术&#xff0c;它通过使用传感器和程序算法&#xff0c;使汽车能够在行驶过程中识别出路径上的黑线&#xff0c;并沿着该线路行驶。 智能车寻迹常用于竞赛或教育用途&#xff0c;可以提高学生…