久违的来记录一下最近学习的通过python代码来实现操控手机,这里是利用adb,安卓调试桥来实现的,当然也可以利用appium来实现,appium是一种自动化测试相关的,也能实现操作手机。
Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
adb是安卓的一种组件,也可以直接在安卓当中使用,通过python使用的adb的操作,打个比方,A会吃饭,要吃饭,然后B叫A用嘴巴吃饭,这样吃,然后A就这样吃饭了。这里的A就是安卓手机,B就是python脚本。
想要使用adb,首先得配置好环境变量,首先先去安卓的官网下载adb的工具,地址https://developer.android.google.cn/studio/releases/platform-tools,然后存放到任意地址后,再将这个platform-tools的地址添加到环境变量中,然后在控制台窗口中输入adb,如果看到以下的情况,就说明安装完成了。
这时候用数据线连接手机,手机根据自己的系统打开开发者模式,然后在控制台窗口中输入adb devices,然后就会出现你的设备名称
利用python代码来控制也是通过系统命令来实现的,你也可以直接在电脑的控制台窗口输入adb命令,运行同样也可以对手机进行操作。
一个点击命令:
adb shell input touchscreen 500 500
这句话的功能是模仿点击屏幕,在500,500的位置点击了一下。如果你输入的命令不对的话,adb也会回馈正确的命令格式或关键字,如下图
其中的设备有平板,键盘,鼠标,手柄等等,控制方式有直接的文本,或者单个的单词,点击,滑动,后面的两个我自己自测是是用不了,可能是我没找到方法。
因为我之前做的时候主要想实现的能够模仿人手去控制手机的那些操作,使用了之后发现弊端还是有很多,不够灵活,不能实现长按或者按住滑动之类的。但是如果说安排好固定的流程,比如一些游戏的刷金币的话,没有复杂的操作,只有单一的点击事件的话,用adb还是相当方便的,只要写好循环,持续的发送adb命令,就可以不断的的运行操作了。
在python中,要使用adb的话,只需要一个os的库就可以
也可以使用subprocess.Popen,最简单使用方式如下,设置shell=True,就不会弹出cmd框
process = subprocess.Popen('adb shell input tap 14 1402',shell=True)
这两种方式都是可以,我在使用后者多一些,并且是应用多线程去使用的,这时候会因为过多的创建,然后发生阻塞,这时候只要把这个服务端口kill掉就可以了。