*目次 [#dffb307c] #contents *autoitって? [#db64a74e] Windows用 自動化用スクリプトツール 簡単にexeファイルに変換できる。 seleniumはダイアログボックスやアラート、そして認証が苦手 そこで、このツールの出番となる。 **感想 [#nf965b01] これ作った人は頭よすぎると思う。エディターとか、 コンパイラーとか、含まれているフリーのツールって見たことがない。 非常にハイクオリティーだ。こんなことができるのは、通常のプログラミングスタイルでは到底なしえない。 コンパイラーを作れるぐらいだから、独自言語で開発してると予想。 *日本語の解説サイト [#l0f574e7] **AutoItXやツールについて解説しているページ [#y6fe1d73] http://blog.livedoor.jp/blackcode/tag/AutoItX **IBMのサイト [#k01a67fe] http://www.ibm.com/developerworks/jp/opensource/library/os-webautoselenium/ ***紹介されているIE用ダウンロード用コード [#t2fa1ee4] If $CmdLine[0]<1 Then Exit EndIf handleDownload($CmdLine[1]) Func handleDownload($SaveAsFileName) Dim $download_title="File Download" If WinWait($download_title,"",4) Then WinActivate($download_title) Sleep (1000) ControlClick($download_title,"","Button2","") Dim $save_title="Save As" WinWaitActive($save_title,"",4) ControlSetText($save_title,"","Edit1", $saveAsFileName) Sleep(1000) if FileExists ($SaveAsFileName) Then FileDelete($SaveAsFileName) EndIf ControlClick($save_title, "","Button2","") Return TestFileExists($SaveAsFileName) Else Return False EndIf EndFunc **firefox版でつかう際のヒント [#wc4833c2] 下記のサイトでIE版とFirefox版の比較が紹介されていた https://groups.google.com/forum/#!topic/selenium-users/fvKmN8ONpkc 抜粋する。 ***IE:ファイルダウンロード [#l287390c] WinWaitActive("File Download - Security Warning","", 10) If WinExists("File Download - Security Warning") Then WinActivate("File Download - Security Warning") Send("!s") EndIf WinWaitActive("Save As", "", 10) Send("!s") ***Firefox:ファイルダウンロード [#ac72a384] WinWaitActive("[TITLE:Opening ; CLASS:MozillaDialogClass]","", 10) If WinExists("[TITLE:Opening ; CLASS:MozillaDialogClass]") Then WinActivate("[TITLE:Opening ; CLASS:MozillaDialogClass]") Send("{ENTER}") EndIf *ダウンロード [#q6b5a9a4] http://www.autoitscript.com/site/autoit/downloads/ あれ?AutoItXっていうActiveXもあるんだ。へぇー。 *つれづれなるままにインストール [#o8542301] ダウンロードしたファイルを、デフォルトでインストールしてみた。 そうそう、.au3ファイルは、エディターを開くって設定しておいた。 なにはともあれ、上記のスクリプトが動けばいい。 ダウンロードが終わると、チュートリアルのヘルプがでてきた。 おおー、なんと親切な。 英語だけどねー。 **Hello World発見 [#gc2be9c0] ヘルプの使い方の一番最初にコードが書いてあった。 #include <Constants.au3> MsgBox($MB_SYSTEMMODAL, "My First Script!", "Hello World!") これをメモ帳とかで.au3という拡張子を付けて保存するっぽいぞ。 **どうやって実行するの? [#u7d9c21f] インストールが終わると、WindowsのプログラムのメニューにAutoIt v3というフォルダができており、その中に、Run Scriptというのがあった。 これかなぁ、ポチっと ファイル選択画面が出てきた。先ほどのHello Worldを保存したファイルを選択してみる。 見事ダイアログが出てきた。 **実行ファイル形式に変換したいんだけど [#j7d102cb] WindowsのプログラムのメニューにAutoIt v3というフォルダができており、その中に、Compile script to .exe というのがあった。 これっぽいな、よし、ポチッと。 専用のダイアログが出てきた。 Sourceっていうところに、拡張子が.au3のファイルを入れて、あとは適当にexeファイルの名前入れておけばよさそうだね。 やってみよう。 au3のファイルを入れたら、exeファイルも同名で勝手に入った。 Convertボタンをクリックする。 おおー、できてる、できてる。クリックしてみると、先ほどと同じ結果が得られた。 **よし、要領はわかった。 [#k6204476] あとは、firefox用の細かい設定だな。 でも、だれかすでにつくってんじゃないか? ぐぐってみるとー。あった。 http://qtp-help.blogspot.jp/2009/07/selenium-handle-dialogs.html でも、これって、Windowのタイトル文字列と一致しているかみてるでしょ、ってことは、 タイトルが英語だったら、効かないんじゃないかとおもうんだよね。 実際に試してみないとなぁ。 ファイルを保存して開くと、 今度は、付属のエディタで開くことができた、インストール時に、デフォルトで編集するように指定していたからだ。 で、エディタから、ビルドできる。.exeファイルができた。 これって、ダイアログが出ているときに、実行したらいいのかな? やってみよう。 **seleniumのダイアログを出した状態で、動かしてみる。 [#fdd5de7b] seleniumのダウンロードダイアログを出した。 ダイアログのタイトルは、もろ日本語。 このツールをJavaから呼び出しているコードを抜粋すると次のようになっていた。 dialog = new String[] { "Save_Dialog_FF.exe","Opening","save" }; Runtime.getRuntime().exec(dialog); 引数は2つだ。 まずは、 Save_Dialog_FF.exe Opening save という引数で実行してみる。 反応がない、引数は日本語に置き換える必要が有りそうだ。 これでどうだ。 Save_Dialog_FF.exe 開く save 動いた!やったぜ! *すでにダウンロード用に変換したファイルを置いてあるサイト [#g166a4e7] http://www.mythoughts.co.in/2013/11/download-file-using-selenium-webdriver.html#.UudOCdKAbcs ここが紹介しているサンプルだと、引数にhrefをSeleniumで取得して引数にしている例が掲載されている。