史上最全的用Python操控手机APP攻略!建议收藏!
最近经常看到用Python操作手机APP的项目,例如抖音、闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境。至于什么是ADB,很多大神都讲过,只是写得比较专业,我等菜鸟看完还是云里雾里。
为了使没有安卓开发经验的人也能快速学会用Python操作手机APP,我从Android SDK部署、ADB基础应用、Python操作手机等方面入手写了这篇文章,目的是使大家对ADB的使用有一个直观的认识,这样在玩上面提到的这些项目时会更轻松一些。
事先声明:本文涉及的各类操作可能有多种实现方法,我只会提及其中一种,而且我采取的方法很有可能不是最优的方法。
1
Android SDK下载和部署
说起Android SDK工具,那还真是不少,有SDK Tools、SDK、Platform-tools等等,这里我推荐SDK Tools,进入https://www.androiddevtools.cn/这个网站可以看到下图中的界面,选择自己对应的系统版本(zip版)下载。
将下载后的文件解压缩,运行其中的SDK Manager.exe文件,进入Packages安装管理界面,对于新手朋友们我建议直接使用默认选项,然后点击右下角的 Install XX packages 按钮,整个下载安装过程大概需要几十分钟,具体时间跟个人网速有关。
接着就是配置环境变量了,把android-sdk目录下的platform-tools和tools文件夹添加到系统变量中,这一步属于常规操作,我就不再演示了。
执行完以上步骤,ADB环境就算配置完毕了,之后要做的就是开启手机的开发者选项、开启USB调试、用usb线将手机跟电脑链接。
下面进入关键的一步——通过ADB测试手机是否连接成功。进入系统终端,输入adb devices
指令,如果出现下图中的结果,就说明刚才的环境部署成功了,其中device前面的是连接的设备号。
如果连接测试不成功,例如找不到设备或者设备连接不上,可以依次尝试关闭并再次开始调试、重启手机、重启电脑、插拔USB线等操作,通常都可以解决。
2
ADB的一些基本操作
虽说是基本操作,但ADB的命令也还是挺多的,说多了大家一时也难以消化。所以我这里只列举几个操作手机APP常用的指令,都是一些基本的操作。
1).显示所有包名
adb shell pm list packages
这个指令会罗列出手机已经安装的所有应用包的名称,如果后缀加上参数-s,则会列出所有的系统应用的名称(下图),而加上后缀参数-3则会列出所有第三方应用名称。
2).显示活动程序
adb shell dumpsys activity activities
这个指令能够获取到当前手机系统中正在运行的程序包的名称,例如当我在手机中启动小米手机的“游戏中心”,运行上述指令就会获取到下图中的信息:
图中realActivity
后面的参数就是当前正在运行的Activity名称,稍微留意一下就会发现,这个名称相比上面的包名称要更加详细一些,至于这个名称有什么用,我们马上就会提到。
3).启动应用程序
adb shell am start -n 要启动的应用Activity名称
这里所使用的Activity名称就是刚才获取到的realActivity
后面的参数,使用这个指令时要注意,启动APP一定要使用上一条命令获取到的Activity名称,不能使用adb shell pm list packages
命令获取到的包名称。例如,我们如果要启动小米的游戏中心,可以使用命令:
adb shell am start -n com.xiaomi.gamecenter/.ui.MainTabActivity
而如果使用了下面这条命令是无法顺利启动应用的:
adb shell am start -n com.xiaomi.gamecenter
4).停止应用程序
adb shell am force-stop 要停止的应用名称
这条指令会强制停止指定的应用程序,跟程序的启动略有差别,在停止应用时,使用adb shell pm list packages
命令获取到的包名称就可以了。还是以小米的游戏中心为例,停止应用使用以下指令:
adb shell am force-stop com.xiaomi.gamecenter
5).点击指定位置
adb shell input tap x y
这条指令就很好理解了,模拟点击手机屏幕中的某个位置,(x,y)是对应的位置坐标。在ADB中默认手机屏幕的左上角坐标是(0,0),右下角坐标是(xmax,ymax)。
这里强调一点:使用模拟点击功能必须设置手机允许通过USB调试修改权限或点击模拟
,下文中的滑动手机屏幕、输入文字信息等功能也需要进行同样设置。
6).滑动手机屏幕
adb shell input swipe x_start y_start x_end y_end
这条指令的本质是使得坐标为(x_start, y_start)的点移动到(x_end, y_end)的坐标位置,以此来实现屏幕滑动的效果。
7).输入文字信息
adb shell input text 需要输入的字符
这条指令没什么好说明的,选定对应位置,然后输入对应的字符即可。
8).模拟手机按键
adb shell input keyevent X
现在的大部分手机除了常规键盘字符以外还有一些特殊按键,例如HOME键、音量+/-,以及软键盘中有时会出现的确认键等等,这些按键的模拟就可以通过上面这条指令来实现。
其中X对应的是特殊键的编号,下面举几个常用的例子(其他的特殊键还有很多):
3对应的是HOME键
24对应的是音量+
25对应的是音量-
66对应的是确认键
9).获取元素位置
细心的朋友现在可能会发现,上面提到的一些关于模拟点击、模拟输入的命令,都涉及到手机元素定位的问题,那么我们在实践中如何确定具体的坐标位置和元素信息呢?这里我提议使用uiautomatorviewer.bat这个工具,它会随着SDK Tools一起安装,就在tools目录下。
来看下面这幅图,手机连接成功后,点击左上角的绿色图标就会获取到手机的当前页面信息,然后在屏幕左侧可以点选任意位置或者元素,相关信息会在右侧屏幕中显示。
是不是感觉跟用chrome分析网页非常类似,有了这些信息,再使用上面提到的几款指令操作手机就不是问题了。
3
Python操控手机App
1).命令行操控
前面讲了ADB操控手机的一些基本操作,只有理论未免太枯燥,现在我们做个小试验来看看效果。
我们还是以小米的游戏中心为例,使用ADB依次完成以下任务:
切换到“网游”选项卡,指令:adb shell input tap 400 263
选中搜索栏,指令:adb shell input tap 776 139
输入“wangzherongyao”,指令:adb shell input text wangzherongyao
点击确认键,指令:adb shell input keyevent 66
进入王者荣耀游戏页面,指令:adb shell input tap 600 500
为了录制方便,我把手机屏幕同步到电脑中,来看看试验效果:
(手机同步电脑-视频)
2).Python脚本操控
从上面的演示视频看,使用ADB操作手机APP还算比较成功,但是如果像刚才那样逐条输入指令,可能还不如直接操作手机来的方便,那么我们就需要借助Python脚本使其批量化、自动化运行。
Python执行终端指令可以借助os.system()函数,我们来看下面这段代码:
上面代码所实现的功能跟我们之前演示的基本一样,主要增加了一个打开游戏中心的操作、简化了一些中间步骤,再来看这次的操作过程(下面的视频),是不是比刚才流畅的多了?
(Python演示操作-视频)
小结:
今天的文章讲到的都是ADB的入门级操作,不懂ADB很多跟安卓APP有关的实践都没办法实现,但是仅仅学会这些还不足以实现一个像样的控制脚本,想要学习更牛逼的操作,可以去参考我在文章开头提到的一些项目。
更多有趣有用文章
懒人专用的奇淫技巧,用Python实现炫酷的语音操作电脑
Python里三个最高逼格的调试神器
九大神招,让Python里数据分析神器Jupyter,完美升华
推荐一款Python编辑器,集Pycharm和Sublime优点于一身的王者
当心啊!仅仅50行Python,就可以在手机端看小姐姐的电脑桌面!
自动编写Python程序的神器,Python 之父都发声力挺!
史上最全的用Python操控手机APP攻略!建议收藏!相关推荐
- 用Python操控手机APP攻略一
[转自https://mp.weixin.qq.com/s/m5NVrayleQWztpJNbZ7mEA为了防止文章失效特此备份] 史上最全的用Python操控手机APP攻略!建议收藏! 原创 大刘 ...
- python手机版怎么用-如何用Python操控手机APP攻略!建议收藏!很全面
最近经常看到用Python操作手机APP的项目,例如抖音.闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境.至于什么是ADB,很多大神都讲过,只是写得比较专业,我等菜鸟看完还是云里雾里. 为了 ...
- 如何用Python操控手机APP攻略!建议收藏!很全面
最近经常看到用Python操作手机APP的项目,例如抖音.闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境.至于什么是ADB,很多大神都讲过,只是写得比较专业,我等菜鸟看完还是云里雾里. 为了 ...
- python教程app攻略_一篇清晰易懂的Python操控手机APP攻略!
阅读全文大概需要 9 分钟. 最近由于一直处于在家远程办公状态,新的一年,很多公司.部门事情要处理,比较忙,公号原创文的创作速度明显减慢!亲爱的读者们,你们都等着急了吧. 最近经常看到许多公号在推一些 ...
- sql server与java实例_史上最全:PostgreSQL DBA常用SQL查询语句(建议收藏学习)
活动预告:本周六,在北京将迎来一年一度的 ACOUG年会,在本次年会上,我们将对社区过去一年的工作进行回顾和梳理,并展望和探讨下一年工作的内容,同时,本次年会也开放了直播通道,名额不多,报名从速哦~ ...
- 史上最全阿里Java面试题目大汇总!强烈建议收藏~
阿里面试题目目录 技术一面(基础面试题目) 技术二面(技术深度.技术原理) 项目实战(项目模拟面试) JAVA开发技术常问的问题 阿里必会知识 阿里面试范畴 阿里面试总结 一:阿里技术一面(基础掌握牢 ...
- [Git] 写文章 史上最全文献检索、阅读及管理攻略
copy from : https://zhuanlan.zhihu.com/p/30605683 一.查文献 首先,我认为需要常备几个体量大.文献全的数据库,有针对性找哦!下面列出了一些适合所有专 ...
- 史上最全Microsoft Edge 中的键盘快捷方式!(建议收藏!)
Ctrl + Shift + B 显示或隐藏收藏夹栏 Alt + Shift + B 将焦点放在收藏夹栏中的第一项上 Ctrl + D 将当前选项卡另存为收藏夹 Ctrl + Shift + D 在新 ...
- 史上最全:PostgreSQL DBA常用SQL查询语句(建议收藏学习)
编者的话:PostgreSQL连续两年被评为年度数据库,备受很多DBA的青睐,本文我们一起来了解学习PostgreSQL常用的查询语句有哪些? 查看帮助命令 DB=# help --总的帮助 DB=# ...
最新文章
- vsftp中配置默认目录
- 最全面详细讲解Oracle入门
- 场景法设计测试用例atm_测试用例设计经典面试题之电梯、杯子、笔、桌子、洗衣机、椅子、ATM等...
- centos7安装mysql8.0简书_CentOS7安装MySQL8.0图文教程
- MVC 之 属性详解
- 「软件项目管理」一文详解软件配置管理计划
- 首席技术执行官_如何在几分钟内找到任何首席执行官的电子邮件地址
- 业界资讯:adobe air 2.7 beta发布
- 编写了一个文件编码转换器。
- 跳表 skipList
- 个人账目管理系统oracle,个人账务管理系统(论文).doc
- matlab中符号函数sgn,matlab 饱和函数 sat
- TCP协议详解 (史上最全)
- matlab K近邻均值平滑滤波,K近邻均值滤波
- 信域安全云网产品架构
- 冰点还原精灵授权问题解答
- dest在C语言什么作用,目前最全面的dest答疑问题及相关回答
- 关于JAVAFX的鼠标单击事件案例
- 在微信里接收文件后如何指着文件用咱编的APP打开?
- html5给页面添加树叶特效,jQuery超酷页面树叶飘落装饰特效插件
热门文章
- 【李佳辉_周报_2022.9.11】
- 云南小学、初中、高中标准教学实验室设备配置清单整体解决方案
- pikachu全网最详细安装教程
- Windows自带的播放器Media Player实现快进
- ts, mp4文件快进快退(seek)原理
- HW - VCN 介绍
- 财务管理html,财务管理.html
- 前端性能优化必备技能 - 利用 Chrome Dev Tools 进行页面性能分析
- hypermesh和lsdyna联合仿真计算某汽车座椅进行的头冲吸能实验
- Android的绘画软件,可以画漫画的软件有那些?你们要的安卓绘画软件,拿走吧!...