目次

autoitって?

Windows用

自動化用スクリプトツール

簡単にexeファイルに変換できる。

seleniumはダイアログボックスやアラート、そして認証が苦手

そこで、このツールの出番となる。

感想

これ作った人は頭よすぎると思う。エディターとか、

コンパイラーとか、含まれているフリーのツールって見たことがない。

非常にハイクオリティーだ。こんなことができるのは、通常のプログラミングスタイルでは到底なしえない。

コンパイラーを作れるぐらいだから、独自言語で開発してると予想。

日本語の解説サイト

AutoItXやツールについて解説しているページ

http://blog.livedoor.jp/blackcode/tag/AutoItX

IBMのサイト

http://www.ibm.com/developerworks/jp/opensource/library/os-webautoselenium/

紹介されているIE用ダウンロード用コード

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版でつかう際のヒント

下記のサイトでIE版とFirefox版の比較が紹介されていた

https://groups.google.com/forum/#!topic/selenium-users/fvKmN8ONpkc

抜粋する。

IE:ファイルダウンロード

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:ファイルダウンロード

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ファイルは、エディターを開くって設定しておいた。

なにはともあれ、上記のスクリプトが動けばいい。

ダウンロードが終わると、チュートリアルのヘルプがでてきた。

おおー、なんと親切な。

英語だけどねー。

Hello World発見

ヘルプの使い方の一番最初にコードが書いてあった。

#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のダイアログを出した状態で、動かしてみる。

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で取得して引数にしている例が掲載されている。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-01-28 (火) 17:03:36 (3739d)