美文网首页
常用模块封装

常用模块封装

作者: 庄周幻梦 | 来源:发表于2021-03-09 21:10 被阅读0次
  • 日志收集器封装成类
# 日志收集器封装类
import logging # 导入logging模块

class MyLogger:
    def __init__(self, name):
        self.logger = logging.Logger(name)
        self.logger.setLevel('DEBUG')
        self.s = logging.StreamHandler()
        self.s.setLevel('DEBUG')
        self.f = logging.FileHandler('tools.log', encoding='utf-8')
        self.f.setLevel('DEBUG')
        self.logger.addHandler(self.s)
        self.logger.addHandler(self.f)
        ft = logging.Formatter("[%(asctime)s - line:%(lineno)d ]: %(levelname)s: %(message)s")
        self.s.setFormatter(ft)
        self.f.setFormatter(ft)

    def info(self, msg, *args, **kwargs):
        self.logger.info(msg, *args, **kwargs)

    def debug(self, msg, *args, **kwargs):
        self.logger.debug(msg, *args, **kwargs)

    def warning(self, msg, *args, **kwargs):
        self.logger.warning(msg, *args, **kwargs)

    def error(self, msg, *args, **kwargs):
        self.logger.error(msg, *args, **kwargs)
  • 获取应用启动Activity
# 获取启动activity
def get_launcher_activity(serial, package_name):
    """
    通过包名去获取 MainActivity
    @param  package_name:包名
    @param serial:手机序列号
    :return 如果手机没有该应用返回None,找不到MainActivity返回'',正常找到MainActivity则返回MainActivity字符串
    关键字解释:
        android.intent.category.LAUNCHER: 决定应用是否在应用程序列表显示.
        android.intent.action.MAIN:决定应用的入口地址.
    """
    result = os.popen(f'adb -s {serial} shell dumpsys package {package_name}').read()
    if not result:
        return None

    end_index = result.index('android.intent.category.LAUNCHER')
    if end_index >= 0:
        start_index = (end_index - 300) if end_index - 300 >= 0 else 0  #
        lines = result[start_index:end_index].split(' ')
        try:
            return [line.strip() for line in lines if package_name in line][-1]
        except IndexError:
            pass

    start_index = result.index("android.intent.action.MAIN")
    if start_index >= 0:
        end_index = (start_index + 300) if (start_index + 300 < len(result)) else len(result)
        lines = result[start_index:end_index].split(' ')
        # print(lines)
        try:
            return [line.strip() for line in lines if package_name in line][-1]
        except IndexError:
            pass
    return ''

相关文章

  • 常用模块封装

    日志收集器封装成类 获取应用启动Activity

  • puppeteer

    数据和执行分开执行 数据层将配置文件和元素的location放入文件 常用的模块封装将需要执行的模块封装到文件,引...

  • Python时间序列处理模块(datetime模块)

    datatime模块 datatime模块是在time模块的基础之上做了封装,提供了更多更好用的类供我们使用,常用...

  • SketchUp 开发之 Geom模块(上)

    Geom模块 Geom模块是我们在做SketchUp二次开发中最常用的模块之一,该模块对点和线处理,相关判断封装,...

  • Python 入门之 模块

    Python 入门之 模块 1、模块 (1)模块是什么? ​ 将一些常用的功能封装到一个文件中,那么这个存储着很多...

  • python日志模块logging使用

    日志模块封装 封装模块测试 日志封装模块的使用 配置日志输出颜色

  • node学习4

    Nodejs 路由模块封装、封装仿照 express 的路由 Nodejs 路由模块封装 封装仿照 express...

  • python 模块

    容器 --- 数据的封装函数 ---语句的封装类 --- 方法和属性的封装模块 --- 模块就是程序 导入模块 ...

  • 模块

    容器------数据的封装 函数------语句的封装 类 ------方法与属性的封装 模块------模块就...

  • Python常用模块

    Python常用模块之time模块 Python常用模块之os模块 Python常用模块之sys模块 Python...

网友评论

      本文标题:常用模块封装

      本文链接:https://www.haomeiwen.com/subject/pkobqltx.html