激what are you talking about状態

バーニングめいぽおじさん

PyAutoGui

現在業務でpostgres、linuxpython、エクセルを触り始めることになったので、勉強がてら何かできないか模索中。

今日はpythonのライブラリ PyAutoGuiの開拓を頑張ります。

<目的>

Windows上でPythonを用いてGUI操作を自動化してみる。

※簡単な自動化だけならばUWSCのほうが楽そうで汎用性も高そう。今後差異を見ていく。

Pywinauto - pywinautoも便利そうなので今後検討

<環境>

windows7,jupyternotebook,Python3.6.1,PyAutoGUI-0.936

<作業>

◇PyAutoGuiのインストール

Windows PowerShell上で "pip install pyauto" を実行

◇動作確認
pyautoguiをインポートしてスクリーンショットを撮ってみる

import pyautogui
s = pyautogui.screenshot(region=(200, 200, 1600, 400))#X座標200~1600,Y座標200~400の範囲のSSを撮影
s.save('Pictures\python\Picturespicture.png')#カレントフォルダからパスを指定して保存


f:id:matayoro:20170917143227p:plain
実際に保存された画像

座標は左上が(X,Y)=(0,0)
画面サイズは
pyautogui.size()
で取得可能


次に指定した画像の座標の取得ができるpyautogui.locateOnscreen()を使用してみる

返り値は、(x座標, y座標, 幅, 高さ)のタプル型
返り値から画像の中央座標の算出に "pyautogui.center()" を使う

実際にyahooの雨マークf:id:matayoro:20170917154101p:plain
を使用して画像の位置にカーソルを移動

import pyautogui

a = pyautogui.locateOnScreen('Pictures\python\\ame.png')#雨画像検出
x, y = pyautogui.center(a)#雨画像の中央座標算出
pyautogui.moveTo(x,y)#カーソルを算出先へ

yahooのTOPでプログラムを実行してみるとちゃんと動いた。
f:id:matayoro:20170917173242p:plain
ただかなり処理時間が遅く、UWSCの10倍は時間がかかっていると思う。