一、前言
最近問我自動化的人確實有點多,個人突發奇想:想從0開始講解python+selenium實現Web自動化測試,請關注博客持續更新!
這是python+selenium實現Web自動化第六篇博文
二、Selenium前五篇博文地址:
【Selenium01篇】python+selenium實現Web自動化:搭建環境,Selenium原理,定位元素以及瀏覽器常規操作!
【Selenium02篇】python+selenium實現Web自動化:鼠標操作和鍵盤操作!
【Selenium03篇】python+selenium實現Web自動化:元素三類等待,多窗口切換,警告框處理,下拉框選擇
【Selenium04篇】python+selenium實現Web自動化:文件上傳,Cookie操作,調用 JavaScript,窗口截圖
【Selenium05篇】python+selenium實現Web自動化:讀取ini配置文件,元素封裝,代碼封裝,異常處理,兼容多瀏覽器執行
三、Selenium之-日志處理
到這里已經搞了好多,但是在排查問題的時候,不是很方便,我們需要對程序的執行中錯誤的地方進行記錄。
1.在 console 輸出log
可以將日志信息輸出的console中,但是這種方式不常用。日常更多使用的是2的方法,將日志信息輸出到log文件中。
#!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Time : 2020/4/17 @Author : 公眾號:軟測之家 更多技術干貨,軟測視頻,面試資料請關注! @Contact : 軟件測試技術群:695458161 @License : (C)Copyright 2017-2019, Micro-Circle @Desc : None """ import logging class RecordLog(object): def __init__(self): self.logger = logging.getLogger() self.logger.setLevel(logging.DEBUG) # 1. 在 console 中輸出日志文件 # 能夠將日志信息輸出到sys.stdout, sys.stderr 或者類文件對象 # 日志信息會輸出到指定的stream中,如果stream為空則默認輸出到sys.stderr。 console = logging.StreamHandler(stream=None) # 將sys.stderr中的信息添加到logger中 self.logger.addHandler(console) # 輸出調試信息 self.logger.debug("這是一條在控制台線上的log") # 關閉流 console.close() # 移除 self.logger.removeHandler(console) if __name__ == "__main__": rl = RecordLog()

2.輸出日志到log文件
#!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Time : 2020/4/17 @Author : 公眾號:軟測之家 更多技術干貨,軟測視頻,面試資料請關注! @Contact : 軟件測試技術群:695458161 @License : (C)Copyright 2017-2019, Micro-Circle @Desc : None """ import logging import os from datetime import datetime class RecordLog(object): def __init__(self): self.logger = logging.getLogger() self.logger.setLevel(logging.DEBUG) # 2.將log信息輸出到log文件中 # 2.1 先定位看將log文件輸出到哪里去 current_dir = os.path.dirname(os.path.abspath(__file__)) print(current_dir) # D:\MySpace\Python\WebTesting\util log_dir = os.path.join('../logs') # 日志名稱構建 log_file_name = datetime.now().strftime("%Y-%m-%d") + '.log' log_file_path = log_dir + '/' + log_file_name print(log_file_path) # 2.2 好的,將日志寫進log文件中 self.file_handle = logging.FileHandler(log_file_path, 'a', encoding='utf-8') formatter = logging.Formatter( '%(asctime)s %(filename)s %(funcName)s %(levelno)s: [%(levelname)s] ---> %(message)s') self.file_handle.setFormatter(formatter) self.logger.addHandler(self.file_handle) def get_log(self): return self.logger def close_handle(self): self.logger.removeHandler(self.file_handle) self.file_handle.close() if __name__ == "__main__": rl = RecordLog() log_info = rl.get_log() log_info.debug('輸出到文件中去') rl.close_handle()

四、持續更新中請關注
如果你對此文有任何疑問,如果你覺得此文對你有幫助,如果你對軟件測試、接口測試、自動化測試、面試經驗交流感興趣歡迎加入:
軟件測試技術群:695458161,群里發放的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術哦。
作者:來自公眾號:軟測之家
出處:https://www.cnblogs.com/csmashang/p/12719079.html
原創不易,歡迎轉載,但未經作者同意請保留此段聲明,並在文章頁面明顯位置給出原文鏈接。