Windows用
自動化用スクリプトツール
簡単にexeファイルに変換できる。
seleniumはダイアログボックスやアラート、そして認証が苦手
そこで、このツールの出番となる。
これ作った人は頭よすぎると思う。エディターとか、
コンパイラーとか、含まれているフリーのツールって見たことがない。
非常にハイクオリティーだ。こんなことができるのは、通常のプログラミングスタイルでは到底なしえない。
コンパイラーを作れるぐらいだから、独自言語で開発してると予想。
http://blog.livedoor.jp/blackcode/tag/AutoItX
http://www.ibm.com/developerworks/jp/opensource/library/os-webautoselenium/
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
下記のサイトでIE版とFirefox版の比較が紹介されていた
https://groups.google.com/forum/#!topic/selenium-users/fvKmN8ONpkc
抜粋する。
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")
WinWaitActive("[TITLE:Opening ; CLASS:MozillaDialogClass]","", 10) If WinExists("[TITLE:Opening ; CLASS:MozillaDialogClass]") Then WinActivate("[TITLE:Opening ; CLASS:MozillaDialogClass]") Send("{ENTER}") EndIf
http://www.autoitscript.com/site/autoit/downloads/
あれ?AutoItXっていうActiveXもあるんだ。へぇー。
ダウンロードしたファイルを、デフォルトでインストールしてみた。
そうそう、.au3ファイルは、エディターを開くって設定しておいた。
なにはともあれ、上記のスクリプトが動けばいい。
ダウンロードが終わると、チュートリアルのヘルプがでてきた。
おおー、なんと親切な。
英語だけどねー。
ヘルプの使い方の一番最初にコードが書いてあった。
#include <Constants.au3> MsgBox($MB_SYSTEMMODAL, "My First Script!", "Hello World!")
これをメモ帳とかで.au3という拡張子を付けて保存するっぽいぞ。
インストールが終わると、WindowsのプログラムのメニューにAutoIt? v3というフォルダができており、その中に、Run Scriptというのがあった。
これかなぁ、ポチっと
ファイル選択画面が出てきた。先ほどのHello Worldを保存したファイルを選択してみる。
見事ダイアログが出てきた。
WindowsのプログラムのメニューにAutoIt? v3というフォルダができており、その中に、Compile script to .exe というのがあった。
これっぽいな、よし、ポチッと。
専用のダイアログが出てきた。
Sourceっていうところに、拡張子が.au3のファイルを入れて、あとは適当にexeファイルの名前入れておけばよさそうだね。
やってみよう。
au3のファイルを入れたら、exeファイルも同名で勝手に入った。
Convertボタンをクリックする。
おおー、できてる、できてる。クリックしてみると、先ほどと同じ結果が得られた。
あとは、firefox用の細かい設定だな。
でも、だれかすでにつくってんじゃないか?
ぐぐってみるとー。あった。
http://qtp-help.blogspot.jp/2009/07/selenium-handle-dialogs.html
でも、これって、Windowのタイトル文字列と一致しているかみてるでしょ、ってことは、
タイトルが英語だったら、効かないんじゃないかとおもうんだよね。
実際に試してみないとなぁ。
ファイルを保存して開くと、
今度は、付属のエディタで開くことができた、インストール時に、デフォルトで編集するように指定していたからだ。
で、エディタから、ビルドできる。.exeファイルができた。
これって、ダイアログが出ているときに、実行したらいいのかな?
やってみよう。
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
動いた!やったぜ!
http://www.mythoughts.co.in/2013/11/download-file-using-selenium-webdriver.html#.UudOCdKAbcs
ここが紹介しているサンプルだと、引数にhrefをSeleniumで取得して引数にしている例が掲載されている。