復習日記

勤務時間内で理解できなかったことやつまづいたことをまとめていく予定。

Seleniumについて

Selenium使って試験やって!と言われたのでやってみた。
つまづいたところを備忘録的な感じで。

Seleniumとは

Seleniumというのは、ブラウザを操作してテストするツールです。はい。

Seleniumの種類

1.Selenium IDE
 FireFoxプラグイン。ブラウザをjavascriptを使って操作する。
 ブラウザ操作を記録してスクリプト作成。
 スクリプトの編集。
 スクリプトの実行。
 スクリプトのWebDriver版ソースへのエクスポート。
 とりあえず、これだけインストールして使ってみればSeleniumの理解が早まる。

2.Selenium Server(Remote Control)
 IDEはローカル上で動かす機能しかないので、リモートPC上で動かしたい、jenkin連携させたいといった場合に必要となる。jar形式で実行するjavaアプリケーションとなってます。

3.Selenium WebDriver(Selenium2)
 IDEの改良版。IDEjavaScript使ってブラウザ操作するのでセキュリティ面などで制約も多いのに対し、WebDriverはブラウザの拡張機能、OSの機能を使ってブラウザ操作するため、IDE版でできなかったことができるようになってます。
各種言語(RubyJavaC#など)でごりごりテストコード書いていって動かします。
ブラウザを操作するAPI群を提供するのが、WebDriverって感じですね。
WebDriver自体にブラウザ操作を記録してテストコード作成する機能はないですが、IDEにWebDriver版のテストコードをエクスポートする機能あるので問題ないです。

4.Selenium Grid
複数台のSelenium Server、WebDriverを並行実行させる場合に使うらしい。
まだ使ったこと無いです。

作業手順

1.IDE使ってブラウザ操作

2.WebDriverのJUnitテストケースにエクスポート

3.EclipseMavenプロジェクト作って、JUnitテストケース取り込む。

4.JUnitテストケースを動かしてみて、つまづいたところを修正&アサーション追加&画面キャプチャ処理追加。

5.jenkinsにJOB作成して、Selenium動かす。

6.ユーティリティや、テストケースを追加していってノウハウ蓄積中。←今ここ

WebDriverでつまづいたところ

1.新しいウィンドウを開く
target=_blank指定で新しいウィンドウを開こうとしたとき、IDEでは処理できずとまってしまった。
対処法はネット上ですぐ見つかった。

2.ChromeIEでのテスト実行
FireFoxだと、そのまま動くが、ChromeIEの場合はちょっと人手間必要だった。
対処法はネット上ですぐ見つかった。

3.Chromeの画面キャプチャ(スクリーンショット
Chromeでの画面キャプチャは、全画面撮ってくれない。FireFoxIEは全画面撮ってくれる。
対処法はjavaScriptExecutor使って、スクロールさせればOK。
ちょっと手間がかかりました。

4.暗黙的なwait、明示的なwait
エクスポートしたソースコード上に、デフォルトで30秒の暗黙的なwaitがされています。
(要素が見つからない、または画面描画中でまだ表示されていない場合は、最大で30秒は待ちますよーという設定)
基本は暗黙的なwaitだけで十分なんですが、明示的なwait設定を使う箇所としては、画面キャプチャするときです。
ちゃんと全部のコンポーネントが表示しきってから画面キャプチャ撮らないといけないですからね。。

5.ダイアログ
ダイアログの処理は標準で用意されているんですが、
なんか挙動が安定しなかったので、sleep1秒入れ込みました。