龙空技术网

Python ADB工具:快速执行ADB操作

半个码农python 1189

前言:

如今看官们对“python调用adbshell”大致比较关切,大家都需要剖析一些“python调用adbshell”的相关知识。那么小编在网络上网罗了一些对于“python调用adbshell””的相关资讯,希望你们能喜欢,各位老铁们一起来学习一下吧!

简介

本文使用Python 内置库subprocess中的run调用系统cmd执行adb命令实现如下功能

1.截图、

2.保存logcat

3.录制视频的工具。

通过这个工具,用户可以方便地获取Android设备的屏幕截图、查看设备日志以及录制设备视频。非常方便提高效率

使用前准备

1.需要配置好ADB环境

2.安卓手机需要提前连接好电脑

完整代码如下:

import timeimport osfrom subprocess import rundef time_stamp():    """    生产年月日,时分秒    """    now = int(round(time.time() * 1000))    return time.strftime('%Y-%m-%d_%H%M%S', time.localtime(now / 1000))class ADBCmd:    def __init__(self, ip, port, save_path=None,file_name=None, res = None, dst = None):        self.ip = ip        self.port = port        self.save_path = save_path        self.file_name = file_name        self.res = res        self.dst = dst        res = os.popen("adb devices")        if not "{}:{}".format(self.ip, self.port) in res.read():            run("adb connect {}:{}".format(self.ip, self.port), shell=True)    def screen_shot(self):        """        名称是时间戳命名格式        需要传一个保存图片路径,路径目录不存在的话,会自动创建        """        t = time_stamp()        shot = r"adb -s{}:{} shell screencap -p /sdcard/{}.png".format(self.ip, self.port, t)        run(shot, shell=True)        if not os.path.exists(self.save_path):            os.makedirs(self.save_path)        pull_png = r"adb -s{}:{} pull /sdcard/{}.png {}".format(self.ip, self.port, t, self.save_path)        run(pull_png, shell=True)    def screen_record(self):        """         时间戳命名        关掉cmd命令窗口,即可保存视频        需要传一个保存视频路径        """        t = time_stamp()        record = r"adb -s{}:{} shell screenrecord /sdcard/{}.mp4".format(self.ip, self.port, t)        os.system(record)        if not os.path.exists(self.save_path):            os.makedirs(self.save_path)        pull_png = r"adb -s{}:{} pull /sdcard/{}.mp4 {}".format(self.ip, self.port, t, self.save_path)        run(pull_png, shell=True)    def log_cat(self):        """        关掉cmd命令窗口,即可保存日志        需要传一个保存日志路径及其名称 例:D:\log\crash.log        """        log = r"adb -s{}:{} logcat > {}".format(self.ip, self.port, self.file_name)        os.system(log)    def pull_file(self):        """        从设备拉数据下来        """        pull = r"adb -s{}:{} pull {} {}".format(self.ip, self.port, self.res, self.dst)        os.system(push)            def push_file(self):    """        上传数据到设备        """        push = r"adb -s{}:{} push {} {}".format(self.ip, self.port, self.res, self.dst)        os.system(push)if __name__ == '__main__':    ip = "10.9.66.194"  # 安卓设备ip地址    port = "8888"  # 端口    save_img = r"D:\code\安卓截图\G00113_2" # 截图保存到电脑路径        file_name = r"D:\code\安卓截图\error.log"  # 保存log的名称        t = ADBCmd(ip, port,file_name) #    t.log_cat()

标签: #python调用adbshell