pywinautoのExampleでNotePadを自動操作
UWSCには負けないぞ!!と。。。pywinautoはオープンなのでブラックボックスもないぞーと!!アピってみる。
#coding: utf-8 # -*- encoding: utf-8 -*- import sys, locale, codecs enc = locale.getpreferredencoding() sys.stdout = codecs.getwriter(enc)(sys.stdout) sys.stdin = codecs.getreader(enc)(sys.stdin) # GUI Application automation and testing library # Copyright (C) 2006 Mark Mc Mahon # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public License # as published by the Free Software Foundation; either version 2.1 # of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, # Suite 330, # Boston, MA 02111-1307 USA "Run some automations to test things" __revision__ = "$Revision: 214 $" import time from pywinauto import application from pywinauto import tests from pywinauto.findbestmatch import MatchError from pywinauto import findwindows def TestExceptions(): "Test some things that should raise exceptions" # test that trying to connect_ to a non existent app fails try: app = application.Application() app.connect_(path = ur"No process with this please") assert False except application.ProcessNotFoundError: pass # test that trying to connect_ to a non existent app fails try: app = application.Application() app.start_(cmd_line = "No process with this please") assert False except application.AppStartError: pass # # try when it isn't connected # try: # app = application.Application() # #app.start_(ur"c:\windows\system32\notepad.exe") # app.Notepad.Click() # #assert False # except application.AppNotConnected: # pass def GetInfo(): app = application.Application() app.start_(ur"notepad.exe") app.Notepad.MenuSelect(u"ファイル->ページ設定") print "==" * 20 print "Windows of this application:", app.windows_() print "The list of identifiers for the Page Setup dialog in Notepad" print "==" * 20 app[u"ページ設定"].print_control_identifiers() print "==" * 20 print "The list of identifiers for the 2nd Edit control in the dialog" app[u"ページ設定"].Edit2.print_control_identifiers() print "==" * 20 app[u"ページ設定"].OK.CloseClick() app.Notepad.MenuSelect(u"ファイル->メモ帳の終了") if __name__ == '__main__': TestExceptions() GetInfo()
日本語OSには同梱のexampleは対応していないので、日本語OS用に書き換えています。
処理があまりにも早いので、必要でしたら、wait(time.sleep)を入れてください。m(_ _)m
実行すると、.print_control_identifiers()がコントロールの座標や位置等も取得してきます。
詳細は、同梱されている、HowToを参照ください。