Selenium(セレニム)
ページ目次
- SeleniumをFireFoxにインストールする
- HTMLタグのID属性の値を固定化する
- Seleniumによる操作手順の記録
- Eclipseからテストケースを実行する
- 参考サイト
- 関連するコンテンツ
SeleniumはFireFoxのプラグインとして発展してきたという経緯から、ここではFireFox上でSeleniumを使用する事を前提に記述していきます。
"http://docs.seleniumhq.org/download/"にアクセスして、Seleniumをインストールして下さい。
![Seleniumのダウンロード](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i477fc519eea6bb66/version/1391782364/%EF%BD%93%EF%BD%85%EF%BD%8C%EF%BD%85%EF%BD%8E%EF%BD%89%EF%BD%95%EF%BD%8D%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89.png)
最新のSeleniumのバージョンをクリックするとインストールが開始されます(2014年2月現在)。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/ie74d587d57493bfa/version/1391782477/image.png)
インストールが完了するとFireFoxの再起動が促されますので、再起動して下さい。そうすると、画面右上上部にSelenium IDEのアイコンが追加されています。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/id755f7300ebcaad9/version/1391782686/image.png)
Web-UIのHTMLタグのID属性の値について
iDempiereのWeb-UIは、使用しているZKフレームワークの仕様により、HTMLタグのID属性の値が、アクセスの都度(ログイン毎)に異なります。この仕様は通常運用している範囲では特に意識するような事ではないのですが、Seleniumを使って自動テストしようとする際には、アクセスする要素を特定できないため、ID属性の値を固定化する必要があります。
HTMLタグのID属性の値を固定化する方法
Eclipseの実行の構成で、server.product.functionaltestを選択し、実行するとID属性の値を固定してiDempiereを起動する事ができます。
![実行の構成:server.product.functionaltest](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i12a62e65d97c9d49/version/1391738464/%E5%AE%9F%E8%A1%8C%E3%81%AE%E6%A7%8B%E6%88%90-server-product-functionaltest.png)
HTMLタグのID属性の値を固定化したら、FireFoxでSeleniumu IDEを起動させます。
![](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/idb664705b0a1828e/version/1391739128/image.png)
![Selenium IDE](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i1a433fd386c99559/version/1391739273/selenium-ide.png)
操作を記録したら、"Java / JUnit4 / WebDriver"形式でエクスポートします。そうするとJavaのクラスファイルが作成されます。
![テストケースのエクスポート](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/iee6448349d64090d/version/1391739544/%E3%83%86%E3%82%B9%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88.png)
Selenium IDEからエクスポートしたjavaのクラスを少し加工して、Eclipseからテストケースを実行します。
テストケースのjavaクラスの加工
![Eclipse パッケージエクスプローラー](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i6657c1538ed83ed0/version/1391740002/eclipse-%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC.png)
Selenium IDEからエクスポートしたjavaのクラスを、"org.idempiere.ui.zk.selenium"プロジェクトの"test"パッケージにコピーします。
コピーしただけではエラーが表示されて使用できませんので、エラーを修正します。主なエラー対応は次の通りです。
- packege 宣言を修正する
- AbstractTestCaseを継承する
- オーバーライドしているメソッドのアクセス修飾子に矛盾が無いように修正する
JUnitを使用して実行する
テストケースのJavaクラスの加工が完了したら、そのjavaクラスを右クリックして、"実行 -> JUnitテスト"を選択します。問題がなければ、FireFoxが起動して、記録した操作が自動実行されます。
![JUnitを使用してテストケースを実行する](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/ia733a9f0bbeacf57/version/1391741017/junit%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%86%E3%82%B9%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B.png)
FireFoxのバージョン問題について
FireFoxの使用しているバージョンが最新版だったりすると、FireFox WebDriverのバージョンアップがついていけずに、正しくテストできない事があります。そのような場合は、FireFoxをダウングレードする必要があります。2014年2月現在、私が試した中ではFireFoxのバージョン21であれば、Seleniumが動作する事を確認しています。
![FireFoxアドオンマネージャ](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i8f860051ff4d393d/version/1391742362/firefox%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3.png)
FireFoxのダウングレードは下記リンク先より、ダウングレードしたいFireFoxのバージョンをダウンロードし、インストールするだけです。
FireFoxをダウングレードする際には、自動更新しないようにFireFoxのオプションの設定を確認して下さい。
![FireFoxのオプション設定](https://image.jimcdn.com/app/cms/image/transf/none/path/sfe3be30db12270da/image/i2e4efcb0d7ad523c/version/1391742569/firefox%E3%81%AE%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E8%A8%AD%E5%AE%9A.png)