当前位置: 首页 > 工具软件 > python-adb > 使用案例 >

python和adb操作

冯浩旷
2023-12-01

python和adb操作

1.在进行安卓端操作的时候,我们就会用到安卓自带的一个内置debug工具adb,那么我们就使用python进行自动输入
2.介绍一些常用的adb命令

adb devices #查看连接设备
adb get-state #获取设备状态
adb push <local> <remote> #向模拟器中写文件:
adb pull <remote> <local> #获取模拟器中的文件:
adb install -r 应用程序.apk
adb uninstall 包名
adb root
adb remount
adb shell
adb -s 模拟器编号 命令
adb shell /system/bin/screencap -p /sdcard/da.png #截图
adb shell screenrecord --time-limit 30 /mnt/deno.mp4 #录制30秒视频
adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等) # 启动Activity
adb forward tcp:5555 tcp:8000 #设置端口

adb  shell  text #该命令主要是用于向获得焦点的EditText控件输入内容,
adb input keyevent # 该命令主要是向系统发送一个按键指令,实现模拟用户在键盘上的按键动作
adb shell input tap #该命令是用于向设备发送一个点击操作的指令,参数是<x> <y>坐标
input swipe [duration(ms)]
向设备发送一个滑动指令,并且可以选择设置滑动时长。
//滑动操作
adb shell input swipe 100 100 200 200  300 //从 100 100 经历300毫秒滑动到 200 200
//长按操作
adb shell input swipe 100 100 100 100  1000 //在 100 100 位置长按 1000毫秒

这里我们主要使用一个python内资库os

主要语法1:os.system("adb devices")#cmd执行命令
主要语法2: devices_cmd = os.popen(r"adb devices", "r")
    	   Device_Manager = devices_cmd.read()
    	   print(Device_Manager)#读取执行后返回内容

知道了语法我们就可以使用语法发送对应的命令以及判断adb的状态。

devices_cmd = os.popen(r"get-state", "r")
Device_Manager = devices_cmd.read()
print(Device_Manager)#读取执行后返回内容
 if 'device' in Device_Manager:
 	print("[INFO] ADB is on")        
elif 'offline' in Device_Manager:
	print("[WARNING] ADB device is dumb")
else:
	print("[WARNING] ADB is abnormal: " + Device_Manager)

    	   
  1. 如何判断命令是否执行呢,我们就要使用到commands模块,此模块适用于python2.x。python3.x 要使用subprocess
    subprocess模块是python的内置模块,他共有三个函数分别是:
    (1) subprocess.getstatusoutput(cmd)返回一个元组(status,output)status代表的shell命令的返回状态,如果成功的话是0;output是shell的返回的结果
    (2)subprocess.getstatus(file)返回ls -ld file执行的结果.
    (3) subprocess.getoutput(cmd) 判断Shell命令的输出内容
import subprocess


def check_adb_status(device_id="xxxxx"):
    out, err = subprocess.getstatusoutput("adb -s " + device_id + " get-state")

    if err == 0:
        if 'device' in out:
            print("[INFO] ADB is on")
            return True
        elif 'offline' in out:
            print("[WARNING] ADB device is dumb")
            return False
        else:
            print("[WARNING] ADB is abnormal: " + out)
    else:
        print("[WARNING] ADB is bad: " + err)
    return False


if __name__ == '__main__':
    check_adb_status(device_id="xxxx")
 类似资料: