SikuliXによるスクリーンショット(苦行)の効率化について

Table of Content

目的

SikuliX1.1.4ではスクリーンを監視して変更が生じたらスクリーンキャプチャをとることが容易に可能である。
これにより、スクリーンキャプチャの苦行の労力を減らせるかを検討する。

Sikulix1.1.4については下記参照
https://needtec.sakura.ne.jp/wod07672/?p=9202

コード

from datetime import datetime
import threading
import time
import sys
# 保存先のフォルダ
captureFolder = "C:\\tool\\sikulix\\log\\"

# 50ピクセル変更したらchangedを呼び出す。ここで調整する
changePixel = 50

threadWaitStopFunc = None
stopFlg = False

# 停止用のスレッド
def waitStopFunc():
    global stopFlg
    popup(u"キャプチャを停止する場合は [OK]を押下してください")
    stopFlg = True

# 範囲内の変更発生時のイベント
def changed(event):
    global stopFlg
    global threadWaitStopFunc
    print ('changed' + datetime.now().strftime('%Y%m%d_%H%M%S%f')[:-3])
    try:
        capture(selRegion, captureFolder, datetime.now().strftime('%Y%m%d_%H%M%S%f')[:-3])
    except:    
        print(sys.exc_info())
        stopFlg = True

# 範囲選択が表示されてRegionを選択する
selRegion = selectRegion(u"select caputure region.")
if selRegion is None:
    exit(1)

selRegion.onChange(changePixel, changed)

# 監視 alt-shift-c
selRegion.observeInBackground(FOREVER); 

threadWaitStopFunc = threading.Thread(target=waitStopFunc)
threadWaitStopFunc.start()

while True:
    if stopFlg:
        break
    wait(1)

popup(u'キャプチャが停止しました')

selRegion.stopObserver()

※画像ファイルの作成に失敗した場合は「キャプチャが停止しました」というウィンドウが表示されるので、その場合は保存フォルダを見直す。

使ってみる

  1. 実行すると矩形が選択できるので、監視したい範囲を選択する。
    image.png

  2. 以下のポップアップが表示されるのでOKを押さないで邪魔にならない位置にどかしておく
    image.png
    監視を終了したくなったらOKをおして処理を停止する。

  3. 監視対象の画面を操作する。
    今回はコマンドプロンプトにて以下の操作を行った
    ・dirコマンド実行
    ・プロパティを表示

  4. 3の操作後に作成された画像ファイル
    20190610_172512624.png
    20190610_172513288.png
    20190610_172513620.png
    20190610_172514295.png
    20190610_172519636.png
    20190610_172551705.png
    20190610_172552031.png
    20190610_172552351.png
    20190610_172553022.png
    20190610_172553355.png
    20190610_172554021.png

使用感

・一文字づつのキー押下や、ウィンドウが表示される過程の半透明のものもキャプチャされてしまう
・とはいえ、一枚一枚心を込めてスクリーンショットを撮る苦行よりはまし。
 (あとで間引くか、大した量でないならそのまま納品でいいはず)
・同様のことは動画でもできる。
 ただ、画像で保存するアドバンテージとしては吹き出しつけたりの編集の容易性。

感動的なツールだな、だが、無意味だ。
※SikuliX1.1.4は64bitのJavaが必要なので、こういうのが本当に必要な職場はどうせ、32ビットマシンしか支給されていないので使えない。仕方ないね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です