python和adb操作

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")
  • 11
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车载testing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值