zoukankan      html  css  js  c++  java
  • python+Appium自动化:日志logging模块

    日志级别

    debug、info、warn、error、critical五个级别

    logging模块构成(四部分)

    logger(记录器,用于日志采集)

    Handler(处理器,将日志记录发送到合适的路径)

    Filter(过滤器,提供了更好的粒度控制,决定输出哪些日志记录)

    Formatter(格式化起,指明了日志的格式)

    logger(记录器)

    在使用debug、info、warn、error、critical五个级别之前创建logging实例

    方法:basicConfig()为日志记录系统做基础配置

    # -*- coding: utf-8 -*-#

    import logging
    # 根据日志级别输出
    # logging.basicConfig(level=logging.INFO)
    logging.basicConfig(level=logging.CRITICAL)

    logging.debug("debug info")
    logging.info("hello world")
    logging.warning("warnning info")
    logging.error("error info")
    logging.critical("critical info")

    Handler(处理器)

    1.StreamHandler

    将日志记录输出发送到sys.stdout,sys.stderr货值任何类似文件流的对象,上面的例子就是输出到控制台

    2.FileHandler

    将日志记录输出发送到磁盘文件,继承了StreamHandler的输出功能

    logging.basicConfig(filename="runlog.log",lever=logging.DEBUG)

    运行后当前脚本路径会生成一个runlog.log文件,用于记录日志

    3.NullHandler

    不做任何格式化或输出,本质是一个开发人员使用“无操作”处理程序。

    Filter(过滤器)

    可以使用Filters来完成比级别更加复杂的过滤

    Formatter

    使用Formatter对象设置日志信息最后的规则、结构和内容,默认的时间为%Y-%m-%d %H%M%S

    %(levelno)s                       打印日志级别数值

    %(levelname)s                   打印日志级别名称

    %(pathname)s                   打印当前执行程序路径

    %(filename)s                      打印当前执行程序名称

    %(funcName)s                    打印日志当前函数

    %(lineno)d                          打印日志当前行号

    %(asctime)s                        打印日志时间

    %(thread)d                          打印线程id

    %(threadName)s                 打印线程名称

    %(process)s                        打印进程ID

    %(message)s                       打印日志信息

    方法:

    logging.basicConfig(level=logging.DEBUG,filename="runlog.log",format="%(asctime)s%(filename)s[line:%(lineno)d] %(levelname)s %(message)s")

    打开淘宝实例:

    # -*- coding: utf-8 -*-#
    
    from appium import webdriver
    import yaml
    import logging
    from selenium.common.exceptions import NoSuchElementException
    
    file = open('../xxx.yaml',encoding="utf-8")
    data = yaml.load(file,yaml.FullLoader)
    
    logging.basicConfig(level=logging.DEBUG,filename="runlog.log",format="%(asctime)s%(filename)s [line:%(lineno)d] %(levelname)s %(message)s")
    
    desired_caps={
                   "platformName": data["platformName"],
                   "platformVersion": data["platformVersion"],
                   "deviceName": data["deviceName"],
                   "appPackage": data["appPackage"],
                   "appActivity": data["appActivity"],
                   "unicodeKeyboard":data["unicodeKeyboard"],
                   "resetKeyboard":data["resetKeyboard"],
                   "noReset": data["noReset"]
                    }
    logging.info("logging app...")
    driver = webdriver.Remote('http://'+str(data['ip'])+':'+str(data['port'])+'/wd/hub',desired_caps)
    
    #检测同意协议弹窗
    def check_agreebtn():
        logging.info("check_agreebtn")
        try:
            agreebtn=driver.find_element_by_id('com.taobao.taobao:id/provision_positive_button')
        except NoSuchElementException:
            logging.info("no agreebtn")
        else:
            agreebtn.click()
    
    def check_localtionbtn():
        logging.info("check_localtionbtn")
        try:
            localtionbtn=driver.find_element_by_id('com.taobao.taobao:id/uik_mdButtonDefaultPositive')
        except NoSuchElementException:
            logging.info("no localtionbtn")
        else:
            localtionbtn.click()
    
    check_agreebtn()
    check_localtionbtn()
    转载请附上原文链接。
  • 相关阅读:
    cmanformat
    mysql-sql语言参考
    jQuery 判断多个 input checkbox 中至少有一个勾选
    Java实现 蓝桥杯 算法提高 计算行列式
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
  • 原文地址:https://www.cnblogs.com/bugbreak/p/12085045.html
Copyright © 2011-2022 走看看