2012年4月22日日曜日

Selenium with JUnit(その5 Download File)

こんにちは, 数ヶ月ぶりにまた, Web 系のAutomation Testを書くことになりまして, Selenium をやっています。

今回ひっかかったのが, ファイルのダウンロードです。Buttonか何かを押して, Download の, ダイアログが表示されて, ファイルをダウンロードする。

このダイアログはモーダルで何かボタンを押さないといけないけど, HTML, JavaScript のコントロールからは逸脱しているので, コントロールがとれず, ボタンが押せない。

というのが, ありますが自動的にファイルのダウンロード, 保存までやってくれる方法があります。


1.  テストするブラウザそのものの設定を変える

2.  ブラウザオブジェクトの設定をコードで一時的に変える


1. をすると設定を変更することになり後々困るので, 今回は2でやりましょう。

※Selenium JUnit 関係をご存知ない方は以下のエントリでチェックしてください。
Selenium with JUnit
解説


以下がプログラミングの変更点です。今回のFirefox の例です。


FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2); // Custom Location
profile.setPreference("browser.download.manager.showWhenStarting", false); // Whether show dialog or not
profile.setPreference("browser.download.dir", new File(".").getAbsolutePath()); // Set Directory
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "text/plain"); // Set MIME type

追加したのは, 4行ほどになります。

Firefox のProfile インスタンスを作るときに, ダウンロードフォルダをセットすること, ダウンロードダイアログを見せないようにすること, MIMEタイプを指定して, このMIMEタイプの場合は, 処理方法を選択せず, そのままディスクに保存をするということをコードで追加しています。

実は, この設定を最初からブラウザにしこんでおくというのが 1 です。

あとは,

File file = new File("ファイルのパス");
Assert.assertTrue( file.exists() );

などでチェックすれば, テスト可能です。
















0 件のコメント:

コメントを投稿