一、日誌作用
- 調試程序
- 瞭解系統程序運行的情況,是否正常
- 系統程序運行故障分析與問題定位
- 用來做用戶行爲分析和數據統計
二、爲項目添加日誌
└── utils
├── log_utils.py
└── se_utils.py
log_utils.py
import logging.handlers
import time
class GetLogger():
logger = None
@classmethod
def get_logger(cls):
if cls.logger == None:
# 日誌器實例
cls.logger = logging.getLogger()
# 設置日誌級別
cls.logger .setLevel(level=logging.INFO)
# 控制檯處理器實例
ch = logging.StreamHandler()
# 以時間切分日誌文件處理器
filename = '../logs' + '/' + time.strftime('%Y%m%d') + 'WebUiTestLog.log'
th = logging.handlers.TimedRotatingFileHandler(filename=filename, when='midnight', interval=1,
backupCount=30, encoding='utf-8')
# 設置日誌格式
fmt = "%(asctime)s %(levelname)s [%(name)s] [filename: %(filename)s - moudle: %(module)s - func: %(funcName)s %(lineno)d line] - %(message)s"
fm = logging.Formatter(fmt)
# 將日誌格式添加到處理器
ch.setFormatter(fm)
th.setFormatter(fm)
# 將處理器添加到日誌器
cls.logger .addHandler(ch)
cls.logger .addHandler(th)
return cls.logger
se_utils.py 添加瀏覽器啓動和關閉的日誌
from selenium import webdriver
from utils.log_utils import GetLogger
logger = GetLogger.get_logger()
class Driver():
_driver = None
@classmethod
def get_driver(cls, browser_name='Chrome'):
if cls._driver == None:
logger.info('正在打開瀏覽器.....')
if browser_name == 'Chrome':
cls._driver = webdriver.Chrome()
elif browser_name == 'Firefox':
cls._driver = webdriver.Firefox()
elif browser_name == 'Safari':
cls._driver == webdriver.Safari()
elif browser_name == 'Opera':
cls._driver == webdriver.Opera()
elif browser_name == 'edge':
cls._driver == webdriver.Edge()
elif browser_name == 'Ie':
cls._driver == webdriver.Ie()
else:
raise NameError(
"Not found %s browser,You can enter 'Chrome', 'Firefox', 'Ie', 'Edge', 'Safari',Opera" % browser_name)
logger.info('打開{}瀏覽器'.format(cls._driver.name))
return cls._driver
@classmethod
def quit_driver(cls):
if cls._driver:
logger.info('正在關閉{}瀏覽器'.format(cls._driver.name))
cls._driver.quit()
logger.info('已關閉{}瀏覽器'.format(cls._driver.name))
cls._driver = None
base_page.py 添加定位信息的日誌
def find_element(self, locator):
try:
WebDriverWait(driver=self.driver, timeout=TIMEOUT, poll_frequency=POLL_FREQUENCY).until(
EC.visibility_of_element_located(locator))
return self.driver.find_element(*locator)
except Exception as e:
msg = "元素定位超時 {}: {}".format(locator[0], locator[-1])
logger.error(msg)
raise TimeoutException(msg)
更多日誌信息請根據例子麻煩自行添加