第一个模块python控制adb,adb获取logcat

第一个模块python控制adb,adb获取logcat

一 .我们平时在测试的时候是需要获取bug日志,我们都使用adb_logcat或者debug时移动端会存储一些日志。接下来我们完成日志的获取。
我们在ADB目录下新建一个文件adb_logcat.py,整体思路通过subprocess执行adb logcat,接收开始和结束信号并执行开始录制日志和结束日志,这里我先定义为input()用户手动输入。方便调试,代码如下:

# coding=utf-8
import os
import subprocess
from datetime import datetime

COMMAND = "adb logcat -v threadtime"  # 常量
cur_path = os.path.dirname(os.path.realpath(__file__))
log_path = os.path.join(os.path.dirname(cur_path), "Log")
print(log_path)


class LogcatCathcher(object):
    def __init__(self):
        self.log_file = None
        self.hf = None
        self._create_hf()
        self.p_obj = subprocess.Popen(
            args=COMMAND,
            stdin=None, stdout=self.hf,
            stderr=self.hf, shell=False)

    def _create_hf(self):
        now_time = datetime.now().strftime("%Y%m%d_%H%M%S")
        self.log_file = os.path.join(log_path, "Logcat_" + now_time + ".txt")
        # 因为没指定具体路径,默认就是在当前脚本运行的路径下创建这个log_file
        self.hf = open("%s" % self.log_file, "wb")

    def catch_logcat(self):
        print("Logcat catching...")
        # 持续询问是否需要停止截取
        judgement = input("If you think it is enough, please input Y:") 
        while judgement != "Y" and judgement != "y":  # 这里必须是and.
            print("Invalid input, please input Y")
            judgement = input("If you think it is enough, please input Y:")
        else:
            if judgement == "Y" or judgement == "y":  # 如果收到停止Yes信号,则开始结束截取
                self.p_obj.terminate()
                self.p_obj.kill()
                self.hf.close()  # 关闭文件句柄
        return os.path.abspath(self.log_file)


if __name__ == '__main__':
    l_obj = LogcatCathcher()
    print("Logcat log has saved to %s" % l_obj.catch_logcat())
    os.system("pause")

二,运行调试
我们会发下在我们工程中Log目录中生成一个txt的文件
在这里插入图片描述

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

车载testing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值