Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

Python+adb操作手机

2019/09/15 Python 模拟操作
Word count: 764 | Reading time: 3min

Adb

wifi连接调试 adb connect {ip}

如果你不想用usb连接调试,可以选择使用adb 连接调试,命令是 adb connect {ip} ,需要在同一个局域网内。这个功能也比较实用,但首次连接时,需要另外一些配置,建议可以网上搜索下adb wifi连接手机等关键字看看。

屏幕截屏 screencap -p {图片存储地址}

这个其实直接通过手机截屏再发送到电脑就可以了,但我开发的是TV应用,在盒子上没法截屏,所以这个命令对我来说还是较实用的。

获取或推送文件 adb pull/push

这个也挺实用的,获取手机指定位置的文件到电脑上,或者从电脑发送文件到手机上

模拟按键事件

//这条命令相当于按了设备的Back key键
adb shell input keyevent 4

//可以解锁屏幕

adb shell input keyevent 82

//在屏幕上做划屏操作,前四个数为坐标点,后面是滑动的时间(单位毫秒)

adb shell input swipe 50 250 250 250 500

手机分辨率一般为1080*1920,其中左上角为(0,0),右下角为(1080*1920),还可以增加一个参数为持续时间

//在屏幕上点击坐标点x=50 y=250的位置。

adb shell input tap 50 250

//输入字符abc

adb shell input text abc

跳一跳游戏adb教程

事件介绍

代码演示都是在进入 adb shell模式下

input swipe模拟的是滑动事件 , 如左滑:input swipe 600 800 300 800

可以输入文本的文本框之类的控件上输入出 OuyangPeng 字符串: input text OuyangPeng

input tap命令模拟触摸屏幕input tap 600 800

input keyevent用法:

1
2
3
4
5
6
7
8
9
10
input keyevent 3    // Home
input keyevent 4    // Back
input keyevent 19  //Up
input keyevent 20  //Down
input keyevent 21  //Left
input keyevent 22  //Right
input keyevent 23  //Select/Ok
input keyevent 24  //Volume+
input keyevent 25  // Volume-
input keyevent 82  // Menu 菜单

功能

adb 启动应用:

adb shell am start -n packgage名 /.activityadb shell am start -n com.android.calculator2/.Calculator

提醒点:一定要找到、找对activity和package

长时间按某个元素:adb input shell …

adb -s 4d0041be98b01f shell input touchscreen swipe 540 716 545 718 1000

语义:-s 后跟设备号,swipe 先传移动坐标范围‘540 716 545 718’,然后1000是长按时间,单位毫秒。

Python语句调用:

  • os.system(只有执行命令是否成功的结果)
1
2
3
4
5
6
import os
CMD = r'.\adb.exe version'
res = os.system(CMD)
print(res) # 0
>> Android Debug Bridge version 1.0.32
>> 0
  • os.popen(可读取执行语句的结果)
1
2
3
4
5
import os
CMD = r'.\adb.exe version'
version = os.popen().read()
print(version)
>> Android Debug Bridge version 1.0.32
  • subprocess.call
1
2
3
4
5
6
import subprocess
CMD = r'.\adb.exe version'
version = subprocess.call(CMD)
print(version) # 0
>> Android Debug Bridge version 1.0.32
>> 0
  • subprocess.Popen(也是一个执行系统命令的工具,但这边效果不太好)
1
2
3
4
5
import subprocess
CMD = r'.\adb.exe version'
version = subprocess.Popen(CMD)
print(version) # 这边是个Popen对象,
>> <subprocess.Popen object at 0x00000219392981D0>

附录

event值记录

https://blog.csdn.net/jlminghui/article/details/39268419

Author: Mrli

Link: https://nymrli.top/2019/02/06/Python-adb操作手机/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
Cmake 入门
NextPost >
ACM_动态规划
CATALOG
  1. 1. Adb
    1. 1.0.1. wifi连接调试 adb connect {ip}
    2. 1.0.2. 屏幕截屏 screencap -p {图片存储地址}
    3. 1.0.3. 获取或推送文件 adb pull/push
    4. 1.0.4. 模拟按键事件
  2. 1.1. 事件介绍
  3. 1.2. 功能
    1. 1.2.0.1. adb 启动应用:
    2. 1.2.0.2. 长时间按某个元素:adb input shell …
  • 1.3. Python语句调用:
  • 1.4. 附录