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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM