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- -*-# 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()
python+Appium自动化:日志logging模块的更多相关文章
- python+Appium自动化:logging配置代码分离
配置文件信息log.conf: [loggers]keys=root,simpleExample [logger_root]level=DEBUGhandlers=consoleHandler,fil ...
- Python开发之日志记录模块:logging
1 引言 最近在开发一个应用软件,为方便调试和后期维护,在代码中添加了日志,用的是Python内置的logging模块,看了许多博主的博文,颇有所得.不得不说,有许多博主大牛总结得确实很好.似乎我再写 ...
- python中日志logging模块的性能及多进程详解
python中日志logging模块的性能及多进程详解 使用Python来写后台任务时,时常需要使用输出日志来记录程序运行的状态,并在发生错误时将错误的详细信息保存下来,以别调试和分析.Python的 ...
- python基础学习十 logging模块详细使用【转载】
很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,主要用于输出 ...
- Python进阶(十一)----包,logging模块
Python进阶(十一)----包,logging模块 一丶包的使用 什么是包: 包是通过使用 .模块名的方式组织python模块名称空间的方式. 通俗来说,含有一个__init__.py文件的文 ...
- Python 入门之 内置模块 --logging模块
Python 入门之 内置模块 --logging模块 1.logging -- 日志 (1)日志的作用: <1> 记录用户信息 <2> 记录个人流水 <3> 记录 ...
- day18包的使用与日志(logging)模块
包的使用与日志(logging)模块1. 什么是包 包就是一个包含有__init__.py文件的文件夹 包本质就是一种模块,即包是用包导入使用的,包内部包含的文件也都是用来被导入使用2 为 ...
- 【python接口自动化】- logging日志模块
前言:我们之前运行代码时都是将日志直接输出到控制台,而实际项目中常常需要把日志存储到文件,便于查阅,如运行时间.描述信息以及错误或者异常发生时候的特定上下文信息. logging模块介绍 Pyth ...
- Python自动化之logging模块
Logging模块构成 主要分为四个部分: Loggers:提供应用程序直接使用的接口 Handlers:将Loggers产生的日志传到指定位置 Filters:对输出日志进行过滤 Formatter ...
随机推荐
- Asp.net SignalR 实现服务端消息实时推送到所有Web端
ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.实际上 Asp.net SignalR 2 实现 服务端消息推送到Web端, 更加 ...
- Xmemcached与SpringBoot实际案例
在本人的这篇文章<Xmemcached集群与SpringBoot整合>基础上,进行XMemcached与SpringBoot实际案例的结合. 有以下这张表,将这张表的增删改查操作都添加到X ...
- csu 1756: Prime
1756: Prime Submit Page Summary Time Limit: 3 Sec Memory Limit: 128 Mb Submitted: 281 ...
- Memcache安装配置
介绍 Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.简单的说就是将数据调 ...
- gcc 与g++的区别
原文 http://www.cnblogs.com/wb118115/p/5969775.html 什么是gcc / g++ 首先说明:gcc 和 GCC 是两个不同的东西 GCC:GNU Compi ...
- C/C+面试题一:找出字符串中出现最多的字符和次数,时间复杂度小于O(n^2)
已知字符串"aabbbcddddeeffffghijklmnopqrst"编程找出出现最多的字符和次数,要求时间复杂度小于O(n^2) /********************* ...
- C 统计用户输入的总行数和字符长度
C 统计用户输入的总行数和字符长度 #include <stdio.h> #include <Windows.h> int main(void) { ]; ; ; printf ...
- WUSTOJ 1889: 编辑距离(Java)
转自:
- javascript的装载和执行
前言 为什么要采用js来create一个script标签,设置src然后append到head中,而不是直接使用script标签,这样不是更简单点吗? javascript的装载和执行 首先,我想说一 ...
- javamail "535 5.7.3 Authentication unsuccessful" 问题排查
有一家odm的服务器用Javamail发邮件的时候报错 Authentication unsuccessful 其他的有些又是正常的 网上查了一下解决方法如下 JavaMailSenderImpl ...