파이썬 + Appium 자동화 : 로그 로깅 모듈

로그 수준

디버그, 정보, 경고, 오류, 중요한 다섯 단계

로깅 모듈 (네 부분)

로거 (로그 수집 기록 수단)

처리기 (프로세서는 적절한 경로에 로그를 송신한다)

필터 (필터 출력의 로그를 결정 입경의보다 나은 제어를 제공한다)

포맷터 (형식에서, 지정된 형식의 로그)

 

로거 (레코더)

디버그, 정보, 경고, 오류, 중요한 다섯 단계를 사용하기 전에 로깅 인스턴스를 생성

방법 : basicConfig는 () 로깅 시스템의 기본 구성을 할 수

# - * - 코딩 : UTF-8 - * - # 

수입 로깅
#根据日志级别输出
# logging.basicConfig (레벨 = logging.INFO)
logging.basicConfig (레벨 = logging.CRITICAL)

logging.debug ( "디버그 정보")
logging.info ( "안녕하세요 세계")
logging.warning는 ( "정보 warnning")
logging.error ( "오류 정보")
logging.critical ( "중요한 정보")

처리기 (프로세서)

1.StreamHandler

sys.stdout 로깅 출력 송신 유사한 문서 sys.stderr를 스트림 오브젝트의 값은, 상술 한 예는 콘솔에 출력

2.FileHandler

로깅 출력 디스크 파일 전송, 그것은의 StreamHandler의 출력을 상속

logging.basicConfig (파일명 = "runlog.log"레버 = logging.DEBUG)

현재 스크립트 경로를 실행 한 후 로깅을위한 runlog.log 파일을 생성

3.NullHandler

서식 또는 출력이 없으면, 이는 "아니오 동작"핸들러를 사용하여 현상은 본질적이다.

필터 (필터)

필터는 필터보다 더 정교한 수준을 사용하여 수행 할 수 있습니다

 

포맷터

포맷터 객체가 마지막 로그 규칙, 구성 및 내용의 정보를 이용하여 설정하고, 기본 시간 % Y- % M- % D % H % M % S이고

% (Levelno)의 인쇄 로그 레벨 값

% (Levelname)의 로그 레벨 인쇄 이름

% (경로 이름)의 인쇄 프로그램 실행 경로

%는 (파일 이름) 현재 실행중인 프로그램 이름을 인쇄이야

% (funcname에)의 출력 전류의 로그 함수

% (LINENO) D 인쇄 현재 행 번호를 기록

% (asctime과) 시간의 인쇄 로그

% (나사) D 잉크 스레드 ID

% (ThreadName)의 인쇄 스레드 이름

% (프로세스)는 인쇄 프로세스 ID S는

% (메시지) 인쇄 로그 정보를이야

 

방법 :

logging.basicConfig (레벨 = logging.DEBUG, 파일명 = "runlog.log"형식 = "% (asctime과)의 % (파일명) S [라인 % (LINENO) D] % (levelname)의 % (메시지)의 ")

 

열기 Taobao의 인스턴스 :

# - * - 코딩 : UTF- 8 - * - #을

에서 appium 가져 오기 webdriver
가져 오기 YAML
수입 로깅
에서 selenium.common.exceptions 가져 오기 예외 : NoSuchElementException

파일 = 개방 ( ' ../xxx.yaml ' 코딩 = " UTF-8 " )
데이터 = yaml.load (파일 yaml.FullLoader)

logging.basicConfig (레벨 = logging.DEBUG, 파일명 = "runlog.log"형식 = "% (asctime과)의 % (파일명) S [라인 % (LINENO) D] % (levelname)의 % (메시지)의 " )

desired_caps = {
                " platformName " : 데이터 [ " platformName " ,
                " platformVersion " : 데이터 [ " platformVersion " ,
                " 장치 이름 " : 데이터 [ " 장치 이름 " ,
                " appPackage " : 데이터 [ " appPackage " ,
                " appActivity " : 데이터 [ "appActivity " ],
               " unicodeKeyboard " : 데이터 [ " unicodeKeyboard " ,
                " resetKeyboard " : 데이터 [ " resetKeyboard " ,
                " noReset " : 데이터 [ " noReset " ]
                }
logging.info ( "로깅 응용 프로그램 ..." ) 
드라이버 = webdriver.Remote ( ' HTTP : // ' + STR (데이터 [ ' IP ' ]) + ' : ' + STR (데이터 [ ' 포트 ' ]) + ' / WD / 허브 ' , desired_caps)

# 프로토콜 동의 탐지 팝
DEF) (check_agreebtn :
    logging.info ( " check_agreebtn은 " )
     시도 :
        agreebtn = driver.find_element_by_id ( ' com.taobao.taobao:id/provision_positive_button ' )
    예외 : NoSuchElementException을 제외시켰다 :
        logging.info ( " 어떤 agreebtn을 " )
     다른 사람 :
        agreebtn.click ()

DEF) (check_localtionbtn :
    logging.info ( " check_localtionbtn은 " )
     시도 :
        localtionbtn = driver.find_element_by_id ( ' com.taobao.taobao:id/uik_mdButtonDefaultPositive ' )
    예외 : NoSuchElementException을 제외시켰다 :
        logging.info ( " 어떤 localtionbtn을 " )
     다른 사람 :
        ) (localtionbtn.click

check_agreebtn ()
check_localtionbtn ()

추천

출처www.cnblogs.com/bugbreak/p/12085045.html