python + adb 实现控制手机

主要步骤:

1、USB连接手机,手机打开USB调试模式,小米手机可能还要打开允许通过USB调试修改权限或者模拟点击

2、下载ADB,在adb文件目录下运行cmd,调用相应的adb指令即可对手机模拟操作

3、在python或其他语言java中,也是通过调用cmd shell,运行相应的adb命令实现自动操作的。

主要命令:

以通过如下ADB命令实现PC对Android手机的模拟输入,点击,滑动等事件,进而对Android手机的操作与控制。

1: adb shell input keyevent keycode

这条命令模拟Android手机按下了event_code对应的按键。

event_code表如下:

0 -->  "KEYCODE_UNKNOWN"

1 -->  "KEYCODE_MENU"

2 -->
 "KEYCODE_SOFT_RIGHT"

3 -->  "KEYCODE_HOME"

4 -->  "KEYCODE_BACK"

5 -->  "KEYCODE_CALL"

6 -->
 "KEYCODE_ENDCALL"

7 -->  "KEYCODE_0"

8 -->  "KEYCODE_1"

9 -->  "KEYCODE_2"

10 -->  "KEYCODE_3"

11 -->  "KEYCODE_4"

12 -->  "KEYCODE_5"

13 -->  "KEYCODE_6"

14 -->  "KEYCODE_7"

15 -->  "KEYCODE_8"

16 -->  "KEYCODE_9"

17 -->  "KEYCODE_STAR"

18 -->
 "KEYCODE_POUND"

19 -->
 "KEYCODE_DPAD_UP"

20 -->
 "KEYCODE_DPAD_DOWN"

21 -->
 "KEYCODE_DPAD_LEFT"

22 -->
 "KEYCODE_DPAD_RIGHT"

23 -->
 "KEYCODE_DPAD_CENTER"

24 -->
 "KEYCODE_VOLUME_UP"

25 -->
 "KEYCODE_VOLUME_DOWN"

26 -->
 "KEYCODE_POWER"

27 -->
 "KEYCODE_CAMERA"

28 -->
 "KEYCODE_CLEAR"

29 -->  "KEYCODE_A"

30 -->  "KEYCODE_B"

31 -->  "KEYCODE_C"

32 -->  "KEYCODE_D"

33 -->  "KEYCODE_E"

34 -->  "KEYCODE_F"

35 -->  "KEYCODE_G"

36 -->  "KEYCODE_H"

37 -->  "KEYCODE_I"

38 -->  "KEYCODE_J"

39 -->  "KEYCODE_K"

40 -->  "KEYCODE_L"

41 -->  "KEYCODE_M"

42 -->  "KEYCODE_N"

43 -->  "KEYCODE_O"

44 -->  "KEYCODE_P"

45 -->  "KEYCODE_Q"

46 -->  "KEYCODE_R"

47 -->  "KEYCODE_S"

48 -->  "KEYCODE_T"

49 -->  "KEYCODE_U"

50 -->  "KEYCODE_V"

51 -->  "KEYCODE_W"

52 -->  "KEYCODE_X"

53 -->  "KEYCODE_Y"

54 -->  "KEYCODE_Z"

55 -->
 "KEYCODE_COMMA"

56 -->
 "KEYCODE_PERIOD"

57 -->
 "KEYCODE_ALT_LEFT"

58 -->
 "KEYCODE_ALT_RIGHT"

59 -->
 "KEYCODE_SHIFT_LEFT"

60 -->
 "KEYCODE_SHIFT_RIGHT"

61 -->  "KEYCODE_TAB"

62 -->
 "KEYCODE_SPACE"

63 -->  "KEYCODE_SYM"

64 -->
 "KEYCODE_EXPLORER"

65 -->
 "KEYCODE_ENVELOPE"

66 -->
 "KEYCODE_ENTER"

67 -->  "KEYCODE_DEL"

68 -->
 "KEYCODE_GRAVE"

69 -->
 "KEYCODE_MINUS"

70 -->
 "KEYCODE_EQUALS"

71 -->
 "KEYCODE_LEFT_BRACKET"

72 -->
 "KEYCODE_RIGHT_BRACKET"

73 -->
 "KEYCODE_BACKSLASH"

74 -->
 "KEYCODE_SEMICOLON"

75 -->
 "KEYCODE_APOSTROPHE"

76 -->
 "KEYCODE_SLASH"

77 -->  "KEYCODE_AT"

78 -->  "KEYCODE_NUM"

79 -->
 "KEYCODE_HEADSETHOOK"

80 -->
 "KEYCODE_FOCUS"

81 -->  "KEYCODE_PLUS"

82 -->  "KEYCODE_MENU"

83 -->
 "KEYCODE_NOTIFICATION"

84 -->
 "KEYCODE_SEARCH"

85 -->
 "TAG_LAST_KEYCODE"

2:adb
shell input tap

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

3:adb
shell input swipe

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

4、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)坐标位置进行模拟的点击事件。

举例:

一、直接在cmd中操作手机

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

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

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

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


  1. import os

  2.  

  3.  

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

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

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

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

程序实例:

#coding:utf-8

#程序功能:可以实现抖音个人页面视频的自动点击,从而自动增加访问量

#思路:抖音主页中两个视频切换点击,可以实现访问量的增加

#使用ADB程序,视频的屏幕坐标可以使用adb shell uiautomator dump命令,获取该页面xml源码后查得

#下述是小米MIX2抖音主页第一个视频和第二个视频的坐标位置

#缺点:运行时不能移动屏幕,后续可以采用获取模块ID号的方式去点击相应的位置

import time

import subprocess

i = 0

#每次操作的间隔时间取决于手机配置,配置越高时间越短

sleep_time = 0.5

while 1:

#用popen设置shell=True不会弹出cmd框

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

time.sleep(sleep_time)

process = subprocess.Popen(‘adb shell input keyevent KEYCODE_BACK‘, shell=True)

time.sleep(sleep_time)

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

time.sleep(sleep_time)

process = subprocess.Popen(‘adb shell input keyevent KEYCODE_BACK‘, shell=True)

time.sleep(sleep_time)

#os.system(‘adb shell input tap 14 1402‘)

#os.system(‘adb shell input keyevent KEYCODE_BACK‘)

#os.system(‘adb shell input tap 375 1402‘)

i+=1

print  str(i) + ‘clicks have been completed‘

原文地址:https://www.cnblogs.com/moying-wq/p/9997818.html

时间: 2024-10-09 17:15:12

python + adb 实现控制手机的相关文章

ADB控制手机命令

手机端配置tcp方式连接 su setprop service.adb.tcp.port 5555 stop adbd start adbd 首先使用管理员权限,然后打开监听5555端口 电脑端使用adb远程连接 adb connect ip_address 此时手机端弹出认证请求点击确认即可连接成功. 通过ADB控制手机 行为包括:点击,滑动,输入文字,按键事件 点击 adb shell input tap x y 点击绝对坐标x,y 滑动 adb shell input swipe star

使用adb命令控制anroid手机

 adb工具即Android Debug Bridge(安卓调试桥) tools.它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互.在某些特殊的情况下进入不了系统或者需要自动化测试的时候,adb就派上用场了 1 手机进入开发者模式,不同手机的进入方式不一样.一般是设置->关于手机,然后连续点击版本号,屏幕上回显示进入开发者模式,界面上可以显示出开发者选项 2 进入开发者选项,选择USB调试和指针位置.USB调试打开后才能使用ADB命令,指针位置打开后可以随时查看触摸点的坐标. 3 将

在Airtest中如何使用无线模式控制手机

在使用Airtest超快速开发App爬虫文章的最后,我们留了一个尾巴:如何启动Airtest的无线模式,不用USB线就能控制手机? 本文将会讲到具体的做法.做法分为两种:第一种是在Airtest的IDE中控制手机.第二种是在Python代码里面控制远程手机. 启动开启手机上的adb端口 无论使用哪种方式,要远程控制手机,就需要首先把手机上的adb端口打开.这一步必需先用USB线把手机连上电脑. 在终端里面执行命令: adb tcpip 48887 其中的端口号48887你可以自行设定为其他的端口

Android开发之控制手机音频

本实例通过MediaPlayer播放一首音乐并通过AudioManager控制手机音频,关于AudioManager的详解可参照:Android开发之AudioManager(音频管理器)详解 程序运行效果图: 实例代码: package com.jph.audiomanagerdemo; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import an

android 控制手机音量的大小 切换声音的模式

(1)程序说明 在android API的AudioManager中,提供了调节手机音量的办法. audioMa.adjustVolume(AudioManager.ADJUST_LOWER, 0); audioMa.adjustVolume(AudioManager.ADJUST_RAISE, 0); 也可以调节手机声音的模式为震动或者静音 audioMa.setRingerMode(AudioManager.RINGER_MODE_NORMAL); audioMa.setRingerMode

三、python的流程控制

三.python的流程控制 1.顺序结构 python和shell,java等语言都有一定的执行顺序即顺序结构. python语言在解释器中的执行顺序是:从上到下依次执行,从左到右执行,所以函数或者变量必须先声明后调用. 2.分支选择结构 在python中只有if选择结构,没有java里的switch...case..结构和shell里的case ...;;;....esac结构,并且与java中的用法规则相似,但是语法格式不一样. 当表达式的结果是数据类型里面的布尔型中的true时,执行if后

Python学习(二):入门篇:python中流程控制与函数编写

python中流程控制与函数编写 Last Eidt 2014/5/2 转载请注明出处http://blog.csdn.net/jxlijunhao 一,流程控制 1)布尔逻辑 Python中利用True来表示逻辑真,False来逻辑假 not :非 and:与 or   :或 ==  :逻辑等 >>> False==True False >>> False==False True >>> not False True >>> Fal

用wifi信号控制手机

============问题描述============ 手机和电脑连在同一个wifi下,能不能通过电脑来控制手机,或者说能不能有一种方法来用wifi信号代替usb来控制手机 ============解决方案1============ 这个相当于远程控制了, 开发一个独立的Service用来实时接收 电脑发出的指令,做出相应的动作. 但需要一个服务器作为数据交换中转站,讲白了就是 socket通信. 电脑发送指令给服务器,服务器接收到指令后 查找是否有在线的手机(手机第一次需要先连上服务器) 如

Android ADB工具-操作手机和获取手设备信息(四)

Android ADB工具-操作手机和获取手设备信息(四) 标签(空格分隔): Android ADB 6. 其他命令 命令 功能 adb shell input text <content> 发送文本内容 adb shell input keyevent <keycode> 发送键盘事件 adb shell wm size 获取设备分辨率 adb shell getprop <key> 获取设备参数信息 adb shell setprop <key> &l