Python脚本利用adb进行手机控制的方法

一.  adb 相关命令:

  1. 关闭adb服务:adb kill-server
  2. 启动adb服务  adb start-server
  3. 查询当前运行的所有设备  adb devices
  4. 可能在adb中存在多个虚拟设备运行 可以指定虚拟设备运行  -s 虚拟设备名称
  5. 重启设备 adb reboot  --指定虚拟设备   adb -s 设备名称 reboot
  6. 查看日志  adb logcat  清除日志 adb logcat -c
  7. 进入linux shell下  adb shell 其中常用的linux命令  cd  cat 等等 输入su可以获取超级管理员名称了 要确定是否有哪些命令 进入 system/bin目录 就知道了
   8. 传入文件到设备中 adb push 本地文件 远程目录

  9. 从设备中拷贝文件到本地  adb -s emulator-5556 pull /data/config.ini d:/

  10. 显示当前运行的全部模拟器:
      adb devices

  1 安装应用程序:
      adb install -r 123.apk

  12. 获取模拟器中的文件:
      adb pull <remote> <local>

  13. 向模拟器中写文件:
      adb push <local> <remote>

  14. 进入模拟器的shell模式:
      adb shell

  15. 卸载apk包:
        adb shell
        cd data/app
        rm 123.apk
       exit
        adb uninstall 123.apk
        adb install -r 123.apk

  16. 查看adb命令帮助信息:
        adb help
  17. 删除系统应用:
        adb remount (重新挂载系统分区,使系统分区重新可写)。
        adb shell
        cd system/app
        rm 123.apk

  18. 获取管理员权限:
        adb root

  19、复制文件:
       复制一个文件或目录到设备:
       adb push <source> <destination></destination></source>
        如:adb push update.zip /sdcard/
       从设备上复制一个文件或目录:
       adb pull <source> <destination></destination></source>
       如:adb pull /sdcard/update.zip.

  20、取得当前运行设备的实例的列表及每个实例的状态:
      adb devices

  21:adb shell input tap
      这条命令模拟Android手机在屏幕坐标(X,Y)处进行了点击操作。

  22:adb shell input swipe

  这条命令模拟Android手机从屏幕坐标(X1,Y1)滑动到坐标(X2,Y2)的操作。

  23、uiautomator dump   dump: creates an XML dump of current UI hierarchy 这个命令是用来成成当前界面的UI层次,并用XML格式进行展示 。这样就可以获取各个组件的位置了

  注:如果PC要想同时控制多台Android手机,必须在adb 后面添加-s

  例如:adb -s 13b6e4c4 shell input tap 400 400

  表示对13b6e4c4这台Android手机进行在屏幕上(400,400)坐标位置进行模拟的点击事件。

  24.   能看到设备信息就代表设备已经连接成功了,接下来的命令就是adb install 路径+包名.apk

例如我的安装包放在桌面,那么命令就是adb install C:\Users\hyh\Desktop\XXX.apk

*** adb shell uiautomator dump /mnt/sdcard/window_dump.xml 获得手机当前界面的UI信息,生成window_dump.xml
*** adb shell input text “123” 输入text

举例:

    1、打开cmd,进入到当前文件夹中,输入命令 adb devices 查看当前与电脑连接的设备(前提是,手机打开usb调试模式),可以查看已连接成功的手机。

    2、 若手机成功连接,输入命令 adb shell input tap 100 100 , 表示点击屏幕上坐标为(100,100)的点,如果不知道需要点击的点的具体位置的话可以在手机开发者模式中设置。

二. adb 模拟按键:

1. 比如使用 adb shell input keyevent <keycode> 命令,不同的 keycode 能实现不同的功能,完整的 keycode 列表详见 KeyEvent,摘引部分我觉得有意思的如下:

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 命令的一些用法举例

电源键

命令:

?


1

adb shell input keyevent 26

执行效果相当于按电源键。

菜单键

命令:

?


1

adb shell input keyevent 82

HOME 键
 命令:

?


1

adb shell input keyevent 3

返回键
命令:

?


1

adb shell input keyevent 4

音量控制
增加音量:

?


1

adb shell input keyevent 24

降低音量:

?


1

adb shell input keyevent 25

静音:

?


1

adb shell input keyevent 164

媒体控制

播放/暂停:

?


1

adb shell input keyevent 85

停止播放:

?


1

adb shell input keyevent 86

播放下一首:

?


1

adb shell input keyevent 87

播放上一首:

?


1

adb shell input keyevent 88

恢复播放:

?


1

adb shell input keyevent 126

暂停播放:

?


1

adb shell input keyevent 127

点亮/熄灭屏幕

可以通过上文讲述过的模拟电源键来切换点亮和熄灭屏幕,但如果明确地想要点亮或者熄灭屏幕,那可以使用如下方法。

点亮屏幕:

?


1

adb shell input keyevent 224

熄灭屏幕:

?


1

adb shell input keyevent 223

三、使用python脚本自动运行cmd 命令

在adb文件夹下建立一个python文件

?


1

2

import os

os.system(‘adb shell input tap 100 100‘);

运行脚本,发现与在命令行输入相同语句有同样的效果。

2、也可以使用subprocess.Popen,最简单使用方式如下,设置shell=True,就不会弹出cmd框

?


1

process = subprocess.Popen(‘adb shell input tap 14 1402‘,shell=True)

转载地址:https://www.jb51.net/article/164865.htm

原文地址:https://www.cnblogs.com/yfp2019/p/11419082.html

时间: 2024-07-30 16:13:21

Python脚本利用adb进行手机控制的方法的相关文章

使用python脚本利用SSH协议通过TFTP备份华为交换机配置

前提工作 python中默认没有安装SSH模块,SSH功能依靠paramiko 模块实现,需要自己独立安装,具体安装步骤自行百度. 主要脚本,和之前一样,通过TFTP备份配置 #!/usr/bin/python #-*- coding: utf-8 -*- import re import paramiko          #引入ssh模块,该模块需要单独安装. import time LogTime = time.strftime('%Y-%m-%d_%H-%M-%S') tftp = ra

使用python脚本利用SSH协议通过TFTP备份批量备份山石防火墙配置

#!/usr/bin/python #-*- coding: utf-8 -*- import re import paramiko          #引入ssh模块,该模块需要单独安装. import time LogTime = time.strftime('%Y-%m-%d_%H-%M-%S') tftp = raw_input('Please Enter TFTP Sever IP:') import Hillstone_icmp action = raw_input('''Pleas

python脚本利用windows计划定时执行

python脚本——一种连接mysql数据库的方法(取回数据为list非tuple格式)并将数据写入TXT

python连接数据库有几种方法,但是对于从数据库取回的数据格式却有些不同,取回为tuple格式的数据处理起来比较麻烦,接下来介绍一种取回为list格式的连接方法,list格式数据处理和使用起来比较方便. #!/usr/bin/python# -*- coding: utf-8 -*-#!/usr/bin/env pythonimport MySQLdbfrom commands import getstatusoutput, getoutputimport sys reload(sys)sys

使用Python脚本获取指定格式文件列表的方法

在Python环境下获取指定后缀文件列表的方式. 来源stackoverflow 这里简单以*.txt的作为例子. 使用glob(推荐) 1 import glob, os 2 os.chdir("/mydir") 3 for file in glob.glob("*.txt"): 4 print(file) 简单实用os.listdir 1 import os 2 for file in os.listdir("/mydir"): 3 if f

分享一个免杀的反弹shell工具(python脚本转换成exe)

有时候网站服务器上有杀毒软件,我们上传的nc.exe.lcx.exe等工具都被杀了,这时候就需要一款免杀的工具来反弹shell. 这篇博客主要是依据国外的一片文章翻译而来,根据国外大佬的教程将Python脚本转换成exe程序即可免杀. 参考链接:https://medium.com/bugbountywriteup/antivirus-evasion-with-python-49185295caf1 第1步:安装Python2.7和Py2exe 一定要安装32位的Python 2.7和32位的P

jenkins执行python脚本的方法,和python版本的兼容性问题

在jenkins上打算运行一段python脚本,查到一些常用的方法,下面会介绍.还遇到了版本兼容性问题导致的怎么都执行不成功,最终试了各种版本,定位到兼容性问题,真是各种坑. 一般有三种方法:1.安装执行python的插件: Python Plugin,安装后在配置那里就可以看到以下的选项,可以在Script部分直接写python代码 2. 用Execute Windows batch command执行python脚本 3. 用Execute shell执行python脚本,注意开始要写#!p

利用ADB和Settings命令行工具轻松的攻击Android手机

从4.2开始,Android提供了一个命令行工具settings.这个工具用于帮助构造SettingProvider的客户端代理,从而可以方便的进行系统设置项的读取和设置. 但是这个工具和adb配合起来,将对Android的安全构成极大的威胁.因为通过adb来执行settings时的时候,uid是shell,而shell拥有非常多的特权. 当然,问题的根源在于adb的shell权限太高,毕竟即使没有settings这个工具(或者说没有/system/framework/settings.jar文

利用Python脚本管理Windows服务

Windows服务常用的功能就是启动服务,关闭服务,重启服务和查询服务运行状态,其中查询服务运行状态是其他三种操作的基础. 本文中提到的使用Python脚本管理Windows服务实际上是调用win32serviceutil模块,此模块来自pywin32包,此模块本身有管理服务的功能,有兴趣的可以去阅读它的部分源码. 本脚本存在的目的是为了熟练Python的语法和基本操作,Windows下有更好的命令行工具来管理服务,如sc.Powershell等.通常命令行工具的执行速度要比services.m