在上一篇学习了python模块后,这篇结合selenium来进行使用,还是根据博客http://blog.csdn.net/u011541946/article/details/70198676 来学习,但是自己也在自己独立思考该怎么写,还是有进步的
一、logging模块封装,就上篇文章的创建logger、handler、formatter,返回了一个logger,用于浏览器操作时的日志输出
#封装一个logger类,并返回logger对象用于浏览器操作日志输出
import logging
import os
import time
class MyLogger(object):
def __init__(self,logger):
#创建一个logger对象,并为其命名
self.logger =logging.getLogger(logger)
#设置日志级别
self.logger.setLevel(logging.DEBUG)
#创建handler,创建一个输出到屏幕的handler和一个输出到文件的handler
#file_path = os.path.dirname(os.getcwd())+r'\logs\logs.txt' #日志信息存放路径
file_path = os.path.dirname(os.getcwd()) + r'/logs/'
#用日期做日志文件名
tpath = time.strftime('%Y%m%d%H%M',time.localtime(time.time()))+'.log'
path = file_path + tpath
streamhandler = logging.StreamHandler()
streamhandler.setLevel(logging.DEBUG)
#filerhandler = logging.FileHandler(path)
filerhandler = logging.FileHandler(path, mode='a', encoding='utf-8', delay=False)
filerhandler.setLevel(logging.DEBUG)
#创建formatter对象,设置日志输出格式
formatter = logging.Formatter(' %(asctime)s %(levelname)s %(name)s %(pathname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
streamhandler.setFormatter(formatter)
self.logger.addHandler(streamhandler)
self.logger.addHandler(filerhandler)
def put_logger(self):
return self.logger
二、浏览器操作日志输出
调用了上个文件的类MyLogger,与方法put_logger(),获得返回的logger对象进行操作
from test.logs_1 import MyLogger
from selenium import webdriver
import time
#调用MyLogger
mylogger = MyLogger(logger='testlogger').put_logger()
class TestLogger(object):
def print_log(self):
driver = webdriver.Chrome()
driver.maximize_window()
mylogger.info('浏览器最大化')
driver.get("https://www.baidu.com")
mylogger.info('打开百度浏览器')
time.sleep(3)
mylogger.info("暂停三秒")
driver.quit()
mylogger.info('关闭浏览器')
test_logger = TestLogger()
test_logger.print_log()
在这里遇到过一个问题,写入文件的中文日志都是乱码,百度了一下参看了官方文档https://docs.python.org/3.6/library/logging.handlers.html 将filerhandler logging.FileHandler(path, mode='a', encoding='utf-8', delay=False)
添加了一些参数,设置了编码格式之后就解决了乱码问题,又找到一个解决问题的方法,查看官方文档 继续学习吧!