Seleniumを使ってIE上のシステムを自動で操作(テスト)するテストツールを作っています。
Webシステムのテストでは、入力を変えながらの各フォーム、エレメントの操作が必要となり、テストコストが膨大となりがちです。
テストコストが高くなるとテストの見落とし、あるいはテストコストが高すいからなかなかソースに手を入れられない、なんていうことにしばしば頭を抱えます。
そこで、Seleniumという自動テストツールを使い、開発者にかかるテスト負担を軽減、テスト品質を向上させることも一つの手法です。
Seleniumの使用方法は、以下の二つがあります。
- Selenium IDE(Firefoxのアドオン。GUIでテストが作れる)
- Selenium WebDriver(ブラウザを操作するプログラムを書く)
この記事ではInternet Explorer11 (IE11)をJavaとSelenium WebDriverで操作する方法について、その導入部を紹介します。
ぼくの環境は次の通りです。
- OS:Windows10 64bit
- 開発環境:Netbeans8.0 (https://ja.netbeans.org/)
- 使用言語:Java
- ブラウザ:IE11
Selenium WebDriverのダウンロード
Java用のSeleniumライブラリと、IE用のDriverを以下からダウンロードします。
IE用Driverのダウンロード
「The Internet Explorer Driver Server」から32bit版か64bit版を選んでダウンロードします。
64bit版はいくつかの問題があるようなので、ぼくは32bit版を使用しています。
ダウンロードして解凍すると、IEDriverServer.exeができますので任意の場所に置きます。
Seleniumライブラリのダウンロード
JavaからSeleniumを操作するためのライブラリをダウンロードします。
「Selenium Client & WebDriver Language Bindings」からJavaのDownloadをクリックします。
ぼくはClient Version2.48を使っています。
古いVersionはサイト左上の「Previous Releases」ページからダウンロードできます。
ページを開くと過去のVersionが選択できますので、欲しいVersionを選択し、その中のselenium-java-***.zipをダウンロードします。
こちらもダウンロードしたらファイルを解凍しておきます。
プロジェクトへのSeleniumライブラリの追加
selenium-java-***.zipを解凍してできたjarファイルをプロジェクトに追加します。
selenium-java-***.zipを解凍すると主に以下のファイルができます。
- selenium-java-2.52.0.jar
- selenium-java-2.52.0-srcs.jar
- libs/*
上記のjarファイル(libsはフォルダ内のjarファイル全て)をプロジェクトに追加します。
netbeansの場合は新規作成したプロジェクトのルートを右クリックし、プロジェクトのプロパティ->カテゴリ->ライブラリを選択しJAR/フォルダを追加からjarを指定して追加します。
プロジェクトエクスプローラのライブラリにjarファイルが表示されればOKです。
IEの設定
1.保護モードの設定
IEの保護モード設定を変更します。
SeleniumはIEの保護モード設定がインターネット、ローカルイントラネット、信頼済みサイト、制限付きサイトの4つで統一されていないと動作しません。IE滅べ。
設定が統一されていれば、保護モードの有効/無効はどちらでも大丈夫です。
Selenium起動時だけ保護モードを切り替えたい場合は、テストコードの頭でレジストリを書き換えるなんて方法があります。
加えて拡張保護モードの変更も必要です。
IEDriverServer 32bit版を使うのであれば拡張保護モードのチェックを外し、64bit版であればチェックを入れてください。
2.レジストリの設定
レジストリの設定を追加します。
OSのbitによって追加する場所が異なりますので注意してください。
Windows 32bitの場合:EY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
Windows 64bitの場合:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
上記のキーに対し、iexplore.exeというDWORD値を作成し値を0に設定します。存在しない場合は作ってください。
Javaプログラムからのブラウザの開き方
ここまでできたらJavaプログラムからIE11ブラウザを立ち上げることができます。
実際のコードは以下を参考にしてください。
キー入力、クリックその他の操作はハンドルしているウインドウに対してのみ有効です。
WebDriverのfindElementメソッドにロケータを指定し、.sendKeysや.clickを使ってエレメントを操作します。
対象のエレメントが見つからずにタイムアウトした場合はNoSuchElementExceptionが発生します。