Python脚本利用adb进行手机控制的方法
一. adb相关命令:
1.关闭adb服务:adbkill-server
2.启动adb服务 adbstart-server
3.查询当前运行的所有设备 adbdevices
4.可能在adb中存在多个虚拟设备运行可以指定虚拟设备运行 -s虚拟设备名称
5.重启设备adbreboot --指定虚拟设备 adb-s设备名称reboot
6.查看日志 adblogcat 清除日志adblogcat-c
7.进入linuxshell下 adbshell其中常用的linux命令 cd cat等等输入su可以获取超级管理员名称了要确定是否有哪些命令进入system/bin目录就知道了
8.传入文件到设备中adbpush本地文件远程目录
9.从设备中拷贝文件到本地 adb-semulator-5556pull/data/config.inid:/
10.显示当前运行的全部模拟器:
adbdevices
1安装应用程序:
adbinstall-r123.apk
12.获取模拟器中的文件:
adbpull
13.向模拟器中写文件:
adbpush
14.进入模拟器的shell模式:
adbshell
15.卸载apk包:
adbshell
cddata/app
rm123.apk
exit
adbuninstall123.apk
adbinstall-r123.apk
16.查看adb命令帮助信息:
adbhelp
17.删除系统应用:
adbremount(重新挂载系统分区,使系统分区重新可写)。
adbshell
cdsystem/app
rm123.apk
18.获取管理员权限:
adbroot
19、复制文件:
复制一个文件或目录到设备:
adbpush
如:adbpushupdate.zip/sdcard/
从设备上复制一个文件或目录:
adbpull
如:adbpull/sdcard/update.zip.
20、取得当前运行设备的实例的列表及每个实例的状态:
adbdevices
21:adbshellinputtap
这条命令模拟Android手机在屏幕坐标(X,Y)处进行了点击操作。
22:adbshellinputswipe
这条命令模拟Android手机从屏幕坐标(X1,Y1)滑动到坐标(X2,Y2)的操作。
23、uiautomatordump dump:createsanXMLdumpofcurrentUIhierarchy这个命令是用来成成当前界面的UI层次,并用XML格式进行展示。这样就可以获取各个组件的位置了
注:如果PC要想同时控制多台Android手机,必须在adb后面添加-s
例如:adb-s13b6e4c4shellinputtap400400
表示对13b6e4c4这台Android手机进行在屏幕上(400,400)坐标位置进行模拟的点击事件。
24.能看到设备信息就代表设备已经连接成功了,接下来的命令就是adbinstall路径+包名.apk
例如我的安装包放在桌面,那么命令就是adbinstallC:\Users\hyh\Desktop\XXX.apk
***adbshelluiautomatordump/mnt/sdcard/window_dump.xml获得手机当前界面的UI信息,生成window_dump.xml
***adbshellinputtext“123”输入text
举例:
1、打开cmd,进入到当前文件夹中,输入命令adbdevices查看当前与电脑连接的设备(前提是,手机打开usb调试模式),可以查看已连接成功的手机。
2、若手机成功连接,输入命令adbshellinputtap100100,表示点击屏幕上坐标为(100,100)的点,如果不知道需要点击的点的具体位置的话可以在手机开发者模式中设置。
二.adb模拟按键:
1.比如使用adbshellinputkeyevent
keycode | 含义 |
---|---|
3 | HOME键 |
4 | 返回键 |
5 | 打开拨号应用 |
6 | 挂断电话 |
24 | 增加音量 |
25 | 降低音量 |
26 | 电源键 |
27 | 拍照(需要在相机应用里) |
64 | 打开浏览器 |
82 | 菜单键 |
85 | 播放/暂停 |
86 | 停止播放 |
87 | 播放下一首 |
88 | 播放上一首 |
122 | 移动光标到行首或列表顶部 |
123 | 移动光标到行末或列表底部 |
126 | 恢复播放 |
127 | 暂停播放 |
164 | 静音 |
176 | 打开系统设置 |
187 | 切换应用 |
207 | 打开联系人 |
208 | 打开日历 |
209 | 打开音乐 |
210 | 打开计算器 |
220 | 降低屏幕亮度 |
221 | 提高屏幕亮度 |
223 | 系统休眠 |
224 | 点亮屏幕 |
231 | 打开语音助手 |
276 | 如果没有wakelock则让系统休眠 |
2.input命令的一些用法举例
电源键
命令:
adbshellinputkeyevent26
执行效果相当于按电源键。
菜单键
命令:
adbshellinputkeyevent82
HOME键
命令:
adbshellinputkeyevent3
返回键
命令:
adbshellinputkeyevent4
音量控制
增加音量:
adbshellinputkeyevent24
降低音量:
adbshellinputkeyevent25
静音:
adbshellinputkeyevent164
媒体控制
播放/暂停:
adbshellinputkeyevent85
停止播放:
adbshellinputkeyevent86
播放下一首:
adbshellinputkeyevent87
播放上一首:
adbshellinputkeyevent88
恢复播放:
adbshellinputkeyevent126
暂停播放:
adbshellinputkeyevent127
点亮/熄灭屏幕
可以通过上文讲述过的模拟电源键来切换点亮和熄灭屏幕,但如果明确地想要点亮或者熄灭屏幕,那可以使用如下方法。
点亮屏幕:
adbshellinputkeyevent224
熄灭屏幕:
adbshellinputkeyevent223
三、使用python脚本自动运行cmd命令
在adb文件夹下建立一个python文件
importos os.system('adbshellinputtap100100');
运行脚本,发现与在命令行输入相同语句有同样的效果。
2、也可以使用subprocess.Popen,最简单使用方式如下,设置shell=True,就不会弹出cmd框
process=subprocess.Popen('adbshellinputtap141402',shell=True)
程序实例:
#coding:utf-8 #程序功能:可以实现抖音个人页面视频的自动点击,从而自动增加访问量 #思路:抖音主页中两个视频切换点击,可以实现访问量的增加 #使用ADB程序,视频的屏幕坐标可以使用adbshelluiautomatordump命令,获取该页面xml源码后查得 #下述是小米MIX2抖音主页第一个视频和第二个视频的坐标位置 #缺点:运行时不能移动屏幕,后续可以采用获取模块ID号的方式去点击相应的位置 importtime importsubprocess i=0 #每次操作的间隔时间取决于手机配置,配置越高时间越短 sleep_time=0.5 while1: #用popen设置shell=True不会弹出cmd框 process=subprocess.Popen('adbshellinputtap141402',shell=True) time.sleep(sleep_time) process=subprocess.Popen('adbshellinputkeyeventKEYCODE_BACK',shell=True) time.sleep(sleep_time) process=subprocess.Popen('adbshellinputtap3751402',shell=True) time.sleep(sleep_time) process=subprocess.Popen('adbshellinputkeyeventKEYCODE_BACK',shell=True) time.sleep(sleep_time) #os.system('adbshellinputtap141402') #os.system('adbshellinputkeyeventKEYCODE_BACK') #os.system('adbshellinputtap3751402') i+=1 printstr(i)+'clickshavebeencompleted'
实现原理
HierarchyViewer:获得当前手机实时的UI信息,方便用于手机的自动化测试;
python中的subprocess.Popen()或Pythonos模块:调用系统命令;
uiautomator工具:获取界面控件信息;
adb命令:对手机进行操作;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。