SikuliX:取っ掛かり用サンプル

シナリオ

※SikuliXでこのような動きができるというサンプル。特に意味はない。実用性ゼロ。 

  1. メモ帳を起動(Appクラスのメソッドから起動
  2. メモ帳にメッセージを書き込み
  3. ワードを起動(ファイル名を指定して実行から起動
  4. ワードの後ろに隠れたメモ帳をアクティブにする
  5. メモ帳のテキストをクリア後メッセージを書き込み
  6. ワードを閉じる
  7. メモ帳のテキストをクリア後メッセージを書き込み
  8. メモ帳をファイル名を指定して保存
  9. メモ帳を閉じる

動画

サンプルコード

import os
import sys
import datetime

reload(sys)
sys.setdefaultencoding("utf-8")
#######################################################################
# FUNCTION AREA
#######################################################################
# テキスト表示
def writetext(text):
    line = "---------------------------------\n"
    text = line + text + line
    paste(text)
# テキストクリア
def cleartext():
    type("a", Key.CTRL) # すべてを選択
    wait(1)
    type(Key.BACKSPACE) # 消去
# カウントダウン
def countdown():
    cnt = 5
    for i in range(5):
        type(str(cnt))
        cnt = cnt - 1
        wait(1)
# 指定画像の表示待ち
def waitprog(pic):
    try:
        wait(pic, 10)
    except:
        popup(u"タイムアウト")
        exit()
#######################################################################
# MAIN
#######################################################################
# メモ帳起動
notepadpath = os.path.join(os.environ["WINDIR"], "notepad.exe")
notepad = App.open(notepadpath)

# メモ帳に書き込み
string = u"このあとワードを起動します\n"
string += u"その後メモ帳をアクティブにします\n"
writetext(string)
countdown() # カウントダウン

# ワードを起動
type("r", Key.WIN) # ファイル名を指定して実行のショートカット
try:
    paste(Pattern("1616246410741.png").targetOffset(-5,95) ,"winword")
    type(Key.ENTER)
except:
    popup(u"例外エラー:ワード起動の失敗")
    exit()

# ワード起動待ち
waitprog("1616246876450.png") # 左記の画像が表示するまで待つ

# メモ帳をアクティブにする
notepad.focus()
wait(2)
# メモ帳の内容を消去
cleartext()
# メモ帳に書き込み
string = u"このあとワードを閉じます\n"
writetext(string)
countdown() # カウントダウン

# ワードを閉じる
App.close("Word")

# メモ帳をアクティブにする
notepad.focus()
wait(1)
# メモ帳の内容を消去
cleartext()
# メモ帳に書き込み
string = u"このあとメモ帳の内容を保存します\n"
writetext(string)
countdown() # カウントダウン

# 名前を付けて保存
type("s", Key.CTRL + Key.SHIFT)
# 保存ダイアログ表示待ち
waitprog("1616254249888.png") # 左記の画像が表示するまで待つ
# ファイル名指定:yyyymmdd_hhmmss.txt
date = datetime.datetime.today().strftime("%Y%m%d_%H%M%S")
path = u"c:\\sample\\" + date
# メモ帳ファイル保存
try:
    click(Pattern("1616255493247.png").targetOffset(111,0)) # ファイル名項目をクリック
    # 項目クリア
    cleartext()
    # ファイル名指定
    paste(Pattern("1616255493247.png").targetOffset(43,0), path) # ファイル名をペースト
    # ファイル保存
    click("1616257027856.png") # 保存
    # メモ帳を閉じる
    notepad.close()
except:
    popup(u"例外エラー:ファイル名保存の失敗")
    exit()

SikuliX IDE画面