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()
    转载请附上原文链接。
  • 相关阅读:
    Token_使用JWT生成token
    JSON Web Tokens(JWT)
    Hadoop 2.0 中的资源管理框架
    Hadoop 1.0 和 2.0 中的数据处理框架
    Hadoop 概述
    探索 OpenStack 之(17):计量模块 Ceilometer 中的数据收集机制
    探索 OpenStack 之(16):计量模块 Ceilometer 介绍及优化
    VMware + OpenStack: 从 Plugin 到 VIO (VMware Integrated OpenStack)的演进
    探索 OpenStack 之(15):oslo.messaging 和 Cinder 中 MessageQueue 消息的发送和接收
    探索 OpenStack 之(14):OpenStack 中 RabbitMQ 的使用
  • 原文地址:https://www.cnblogs.com/bugbreak/p/12085045.html
Copyright © 2011-2022 走看看