盘点Python编程的简易版自动化工具——ADB史上全操作

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 盘点Python编程的简易版自动化工具——ADB史上全操作

大家好,我是皮皮,今天给大家讲讲ADB操作。


前面给大家分享了Airtest,感兴趣的小伙伴,可以前往:手机自动化测试IDE-----Airtest实战篇手机自动化测试IDE ----- 手把手教你用Airtest模拟器来连接手机手机自动化测试IDE-----Airtest基本操作方法手机自动化测试IDE ----- Airtest的安装和IDE控件详解,任君挑选。


前言


ADB,中文名安卓调试桥,它是一种功能多样的命令行工具,可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 ADB命令来从命令行终端调用客户端。

守护进程:在设备上运行命令。守护进程在每个设备上作为后台进程运行。

服务器:管理客户端和守护进程之间的通信。服务器在开发机器上作为后台进程运行。


通过这个命令行工具我们可以使用它来操作手机上的资源,而且不需要借助Android SDK就可以轻松操控手机里的应用。


一、工作原理


当您启动某个ADB客户端时,客户端会先检查是否有 ADB服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 ADB 客户端发出的命令 - 所有 ADB客户端均通过端口 5037 与 ADB 服务器通信。


然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现ADB守护进程 (ADBD),便会与相应的端口建立连接。请注意,每个模拟器都使用一对按顺序排列的端口 - 用于控制台连接的偶数号端口和用于ADB 连接的奇数号端口。


二、下载ADB


这里小编已经给大家准备好了,下载地址:https://u062.com/file/7715018-452566390,如果你想在任何文件目录使用ADB的话,必须把ADB的安装目录加入环境变量,然后我们可以使用ADB的界面工具,它可以很直观方便的执行ADB的命令并显示结果,这个工具就是APKInstaller,下载地址:https://u062.com/file/7715018-452566398,如图:

image.png

image.png


三、基本操作


1.设备的启动关闭操作

这里我选择连接模拟器,看看连接有什么区别。

1).连接设备

adb connect 127.0.0.1:62001#连接一个模拟器

2).启动服务

adb start-server#开启服务

3).查看设备

adb devices #查看设备信息adb version #设备版本adb help #帮助文档 adb get-state #查看设备状态 device(正常连接),offline(连接异常),unknown(没有连接)adb get-serialno #获取序列号adb get-devpath #获取设备路径adb shell cat /system/build.prop #获取设备名称

4).操作多个设备

adb —a 监听所有网络接口,而不仅仅是localhost  -d 使用USB设备(如果多个设备连接错误)  -e 使用TCP / IP设备(如果可用多个TCP / IP设备错误)  -s 使用给定的序列号(覆盖ANDROID_SERIAL)  -t 使用给定设备ID  -h adb服务器主机名称(默认= localhost)  -p adb服务器的端口(默认= 5037)  -l 监听来自套接字的adb服务器(默认= tcp: localhost: 5037)  例如:adb -s 127.0.0.1:62001 shell

image.png

这样我们呢就进入了模拟器的Shell界面了。

5).关闭服务

adb kill-server

6).设置监听TCP/IP的端口

adb tcpip 5555

7).断开连接

adb disconnect 127.0.0.1:62001

8).关机与重启

adb reboot #设备重启adb shutdown #设备关机

9).Root权限

adb root   # 正常输出:restarting adbd as rootadb unroot # 取消root权限

10).刷机模式

adb reboot bootloader #重启到bootloader,即刷机模式adb reboot recovery #重启到recovery,即恢复模式adb sideload <path-to-update.zip>#更新系统

11).命令转载

adb wait-for-device # 在模拟器/设备连接之前把命令转载在adb的命令器中


2.设备应用操作

1).查看应用

adb shell pm list packages #所有应用adb shell pm list package -f #adb shell pm list packages -s #系统应用adb shell pm list packages -3 #三方应用adb shell pm list packages | findstr bluetooth #过滤应用  管道符进行搜索,Linux下使用grep

image.png

2).查看应用的Activity信息

adb shell dumpsys package com.android.bluetooth #查看系统应用蓝牙的包名信息adb shell dumpsys activity activities #查看所有的活动程序包名adb shell dumpsys activity | findstr mFocusedActivity #查看当前重启的是哪个包adb shell dumpsys activity top | findstr activity #查找设备活动程序的父窗口

image.png

3).清除应用数据和缓存

adb shell pm clear

image.png


3.安装卸载应用

adb install D:/aa.apk #安装在电脑上的apkadb install -r D:/aa.apk#覆盖安装 保留数据和缓存文件 -g 授予所有运行时权限adb shell pm install /scard/picture#安装在手机上的apkadb uninstall -k 包名在模拟器或者真机中需要使用 -s来指定

4.日志

adb logcat#查看日志adb logcat -v time #打印详情日志,会记录当前的所有操作行为以及产生的结果,默认持续监听,按下Ctrl+c即可结束adb logcat -v time >D:\log.txt #保存日志到电脑adb logcat -f /sdcard/1.txt    #保存日志到手机adb logcat | findstr com.android.bluetooth #保存指定包名的日志adb logcat -c  #清除之前的日志输出adb logcat | findstr ActivityManager  #查看当前正在运行的Activityadb logcat | findstr Displayed        #查看当前正在运行的Activityadb bugreport #查看bug报告adb logcat -b radio #无线通讯的日志adb shell dmesg #内核日志

5.设备文件操作

#把电脑上的文件传到手机储存卡中adb push C:\Users\Administrator\Desktop\1.gif /sdcard/
#把手机存储卡里的文件传到电脑adb pull /sdcard/1.gif C:\Users\Administrator\Desktop\

image.png

image.png

image.png

6.截屏,录屏

adb shell screencap /sdcard/1.png #当前窗口截屏保存到手机adb shell /system/bin/screencap -p /sdcard/2.pngadb exec-out screencap -p >1.png #截图保存到电脑adb shell screenrecord >1.mp4  #屏幕录像,Ctrl+c停止录制--size #视频大小--bit-rate #比特率--time-limit #持续时间--verbose #命令行显示log信息注:模拟器和安卓4.4以下版本不支持录屏

7.Shell

Shell里有很多命令,我们简单列举下:

命令 功能
cat 显示文件内容
cd 切换目录
chmod 改变文件的存取模式/访问权限
df 查看磁盘空间使用情况
grep 过滤输出
kill 杀死指定 PID 的进程
ls 列举目录内容
mount 挂载目录的查看和管理
mv 移动或重命名文件
ps 查看正在运行的进程
rm 删除文件
top 查看进程的资源占用情况

1).进入退出

adb shell #进入shell 返回$ 则没有root权限  #有root权限exit #退出shell

2).设备的相关信息

adb shell getprop ro.build.version.release #安卓系统版本adb shell getprop ro.product.model #查看设备型号adb shell cat /sys/class/net/wlan0/address #查看MAC地址adb shell wm size #设备屏幕分辨率adb shell wm size 400X654 #设置屏幕分辨率adb shell wm size reset #恢复原屏幕分辨率adb shell wm density #设备屏幕密度adb shell wm density 100 #修改屏幕密度为100dpiadb shell wm density reset #恢复原屏幕密度adb shell wm overscan 10,20,30,100 #显示区域adb shell wm overscan reset #恢复原显示区域adb shell dumpsys window displays #显示屏参数adb shell service list  #查看后台services信息adb shell settings put global adb_enabled 0 #关闭 USB 调试模式adb shell uiautomator dump   #获取当前界面的控件信息adb shell ime list -s  #设备上的输入法

3).进程

adb shell ps #查看手机正在运行的进程 adb shell ps | findstr bluetooth adb shell ps -x pid #查看指定pid的进程状态信息adb shell kill pid #根据进程号杀进程adb shell procrank #杀进程 adb shell start adbd #启动守护进程adb shell stop adbd  #关闭守护进程

4).性能分析

adb shell cat /proc/cpuinfo #获取CPU序列号adb shell cat /proc/meminfo #查看当前内存占用adb shell cat /proc/iomem #查看IO内存分区adb remount #将system分区重新挂载为可读写分区adb shell dumpsys meminfo bluetooth #查看蓝牙占用的内存adb shell dumpsys cpuinfo | findstr bluetooth #获取CPUadb shell top #查看实时资源占用情况adb shell top -n 1 | findstr bluetooth #刷新一次内存信息,然后返回蓝牙内存占用adb shell top #查看设备cpu和内存占用情况adb shell top -m 6 #查看占用内存前6的appadb shell dumpsys gfxinfo bluetooth #获取流畅度相关adb shell netcfg #查看设备的网络连接情况adb shell ifconfig wlan0 #获取wlan0的IP地址和子网掩码

5).文件操作

adb shell ls #列出目录下的文件和文件夹adb shell cd sys #切换当前目录为sysadb shell rename 旧文件名 新文件名 #重命名文件名adb shell rm /sys/1.apk #删除指定目录下的文件adb shell rm -r #删除指定目录下的文件夹及其子目录adb shell mv 旧文件名 新文件名 #移动文件adb shell chmod 777 1.jpg #设置文件权限adb shell mkdir 文件夹名 #新建文件夹adb shell cat 文件 #查看文件内容adb shell cat /data/misc/wifi/*.conf #查看WiFi密码

6).按键

adb shell input keyevent 3 # HOME 键adb shell input keyevent 4 # 返回键adb shell input keyevent 5 # 拨号adb shell input keyevent 6 # 挂断adb shell input keyevent 24 # 音量+adb shell input keyevent 25 # 音量-adb shell input keyevent 26 # 电源键adb shell input keyevent 27 # 拍照adb shell input keyevent 64 # 打开浏览器adb shell input keyevent 82 # 菜单键adb shell input keyevent 85 # 播放/暂停adb shell input keyevent 86 # 停止播放adb shell input keyevent 87 # 播放下一首adb shell input keyevent 88 # 播放上一首adb shell input keyevent 122 #移动光标到行首或列表顶部 adb shell input keyevent 123 #移动光标到行尾或列表底部adb shell input keyevent 126 # 恢复播放adb shell input keyevent 127 # 暂停播放adb shell input keyevent 164 # 静音 adb shell input keyevent 176 # 打开系统设置 adb shell input keyevent 187 # 切换应用adb shell input keyevent 207 # 打开联系人 adb shell input keyevent 208 # 打开日历adb shell input keyevent 209 # 打开音乐adb shell input keyevent 210 # 打开计算器 adb shell input keyevent 220 # 降低屏幕亮度adb shell input keyevent 221 # 提高屏幕亮度adb shell input keyevent 223 # 休眠adb shell input keyevent 224 # 点亮屏幕adb shell input keyevent 231 # 打开语音助手adb shell input keyevent 276 # 如果没有 wakelock 则让系统休眠

7).点击,滑动屏幕

adb shell input tap 100 300 #在(100,300)处点击adb shell input swipe 100 1200 100 200 #上滑adb shell input swipe 100 200 100 1200  #下滑

8).输入

adb shell input text hello  #输入hello

9).电池

adb shell dumpsys battery

image.png

10).设备ID

adb shell settings get secure android_id

11).无线网络

在操作前必须获得Root权限。

adb shell svc wifi enable  #开启WiFiadb shell svc wifi disable #关闭WiFi

8.端口转发

adb forward tcp:60 tcp:70 #将60端口转到70端口adb forward tcp:60 local:logd # 将60端口转到local:logd的转发

9.Activity 管理器

adb shell am start -n activity路径 #启动某一个activityadb shell am start -a android.intent.action.VIEW -d www.baidu.com#启动默认浏览器打开一个网页adb shell am start -n com.android.camera/.Camera #启动相机adb shell am start -a android.intent.action.CALL -d tel:10086#启动拨号10086adb shell am startservice -n 服务 #开启服务adb shell am stopservice  服务 #停止服务adb shell am force-stop bluetooth #杀死蓝牙进程adb shell am kill 进程号  #杀掉进程adb shell am broadcast -a android.intent.action.BOOT_COMPLETED #向所有组件广播设备启动完毕

10.调用软件包管理器

adb shell pm list permissions #查看权限adb shell pm list permission-groups #输出所有已知的权限组adb shell pm list permissions -d -g -f #查看系统危险权限并按组输出所有信息adb shell pm list instrumentation#列出所有测试软件包,-f列出测试软件包的APK文件adb shell pm path com.android.bluetooth #查看软件安装路径adb shell pm list features  #输出系统的所有功能adb shell pm list libraries #输出当前设备支持的所有库adb shell pm list users #输出系统中的所有用户adb shell pm enable ** #启用给定的软件包或组件(写为“package/class”)adb shell pm disable ** #停用给定的软件包或组件(写为“package/class”)adb shell pm get-max-users #输出设备支持的最大用户数

11.备份

adb backup -all #备份所有数据

12.压力测试Monkey

格式:adb shell monkey -v -p your.package.name 500adb shell monkey -v -p com.tencent.weishi 500

image.png


四、总结


以上就是ADB的全部内容了,通过对ADB的了解我相信大家应该能通过Python编程做一个简易版的自动化工具了,不再依靠Airtest。

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
2天前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
33 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
4天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
23 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
1月前
|
测试技术 数据库 Python
Python装饰器实战:打造高效性能计时工具
在数据分析中,处理大规模数据时,分析代码性能至关重要。本文介绍如何使用Python装饰器实现性能计时工具,在不改变现有代码的基础上,方便快速地测试函数执行时间。该方法具有侵入性小、复用性强、灵活度高等优点,有助于快速发现性能瓶颈并优化代码。通过设置循环次数参数,可以更准确地评估函数的平均执行时间,提升开发效率。
106 61
Python装饰器实战:打造高效性能计时工具
|
1月前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
79 37
Python时间序列分析工具Aeon使用指南
|
1月前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
52 14
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
115 2
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
126 80

热门文章

最新文章

推荐镜像

更多