前言:
如今看官们对“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