PAMIEを使ってファイル選択ダイアログを扱う方法メモ
ここ一ヶ月くらい、Internet Explorerを自動操縦すると一部の業務が楽になるため、PAMIEというpythonのモジュールを使っています。*1
導入方法はid:spacecadetさんのこちらの記事が大変参考になりました。ありがとうございます
基本的な操作は、id:spacecadetさんが紹介されているのと、PAMIEとセットで配布されている'buildCert.py'というPAMIEのチュートリアルとのテストを兼ねたモジュールのソースを読めばわかるようになっています。
が、buildCert.py'を走らせると一箇所うまくいかないところがありその対策がわかったのでメモを残しておきます。
PAMIEで確認ダイアログやファイル選択ダイアログを扱うときは別のモジュールcModalPopUp.pyを使うようになっているのですが、ファイル選択ダイアログはそのまま走らせても途中で止まってしまいます。
該当部分のソースは以下のとおりですが、
dialogThread = cModalPopUp.handlePopup("ChooseFile",testFile, "OPEN"); dialogThread.setName('Close dialog thread') dialogThread.start(); ie.buttonClick(btnname) time.sleep(0.5) dialogThread.join();
"OPEN"をu'\u958b\u304f'.encode('cp932')に変えるとうまくいきます。*2
これではてなダイアリーに自動で写真を投稿とかそういうこともできると思います。
追記:
このままだと、ファイル選択ダイアログではなく一番上のウィンドウのテキストスペースにファイル名が入力されてしまいます。(ファイル選択ダイアログが一番上に来ているとよいのですが。)
これを回避するためにはcModalPopUp.pyの50行目を
self.popupName = u'\u30d5\u30a1\u30a4\u30eb\u306e\u9078\u629e'.encode('cp932');
('Choose File'をCP932のコーデックで'ファイルの選択'になるように)書き換えるとうまくいくようです。