SikuliX:例外エラー時スクリーンショットとトレースバックを取得する

シナリオ

  • find()で例外発生時にスクリーンショットとトレースバックを取得する。
  • 保管先はc:\Logs
  • スクリーンショットファイル名:yyyymmdd-hhmmss_画面キャプチャ.png
  • トレースバックファイル名  :yyyymmdd-hhmmss_トレースバック.txt

サンプルコード

import datetime
import traceback
import shutil

# ログ保管パス
LOG_PATH = u"C:\\Logs\\"

# スクリーンショット
def screen_shot():
    tmp = SCREEN.capture(SCREEN.getBounds()).getFile()
    filename = datetime.datetime.today().strftime("%Y%m%d-%H%M%S") + u"_画面キャプチャ" + ".png"
    shutil.move(tmp, LOG_PATH + filename)

# トレースバック
def get_traceback():
    filename =  datetime.datetime.today().strftime("%Y%m%d-%H%M%S") + u"_トレ-スバック" + ".txt"
    with open(LOG_PATH + filename, "a") as f:
        traceback.print_exc(file = f)

try:
    find("sample.png").highlight(1)
except:
    screen_shot()    
    get_traceback()

結果


トレースバック
Traceback (most recent call last):
   File "C:\hoge.sikuli\hoge.py", line 20, in 
     find("sample.png").highlight(1)
 FindFailed: FindFailed: sample.png: (82x52) seen at (212, 207) with 0.98 in R[0,0 1920x1080]@S(0)
   Line 2287, in file Region.java