selenium webdriver セットアップ
OSやWebブラウザの種類は日々増えていくばかりでなく、そのシェアは日によって変わり続けている。やっぱりテストは自動化だよね、
ってことでseleniumを導入したいのだけど、簡単なTipsが公開されていないので、どうせなら自分で書いてみようと。
seleniumでブラウザテストの自動化環境を整えるための初歩の初歩からのメモ
構築環境
対象のブラウザ
・Internet Explorer、Firefox、Chrome
Mac / Safariとかも必要。とりあえずWindows環境を整える。
Java JDKをインストール
とりあえず最新版をここからDLしてセットアップ
Eclipse(日本語版 All in one)をダウンロード
Eclipse 日本語化 | MergeDoc Project
解凍してC:\eclipse とかフォルダを作ってその中に展開。
eclipse.exeを起動。とりあえずは無事に起動すればOK。
Seleniumのコアなプログラムファイル達を手に入れる
http://docs.seleniumhq.org/download/
なんだかいっぱいあってどれをDLしたらよいのか一見わからないですが
「Selenium Client」+「Java」ってやつを選びます。
ついでに「Internet Explorer Driver Server」も
ダウンロードしたファイル達は解凍して次のElipseのJAVAプロジェクト内に配置します。
SeleniumのJAVAプロジェクトを作成 @ Eclipse
このページが超詳しい。
Selenium WebDriverのインストール~動かしてみる - hifive
Eclipseで、新しいJAVAプロジェクトを作成、さきほどのjarふぁいるなどなどを、このページの指示通りの場所にコピーします。
実行はソースファイルの好きなところ、右クリック→デバッグ→JUnitで。
パースペクティブ→ビュー→JUnitウインドウも便利なのでおわすれなく。
InternetExplorDriver(IEdriver)でよくハマるネタ。
インターネットオプション→セキュリティ→各ゾーンの保護モードが異なると、ゾーンエラーが起こる。
FireFoxでよくはまる?
ブラウザ起動時にプロキシの認証子画面が表示される。
これが邪魔をしてスクリプトが進まないってことがある。
解決策としてはあらかじめプロキシは使用しない設定にしておくこと。
Seleniumでは別のドライバーが無くても動いてくれるFirefoxですが、バイナリーパス(firefox.exeの格納パス)でエラーが起こる場合もあるのでご注意を。
By.linktext("リンク文字")が効かないときがある。xpathが確実だとか。
Chromeでよくハマること。
何しろ表示速度が早いChromeなのでスクショの取得タイミングが早すぎてあとで画像を見ると真っ黒でびっくりしたりすることも。なのでChromeの場合は、スクショ取得をコンマ数秒だけ遅らせるとか、すると良いかも。
Selenium GRID
さてさて次は「Selenium GRID」または「Selenium Remote Contorol」
とよばれるリモートテスト自動化の環境構築。
マスター(HUB)端末から複数のスレーブ(NODE)端末に対して同時にテストスクリプトを実行することが出来る。
理論上は同一のスクリプトで、他の端末に対して同時に並行テストを実行することが出来る。というものだ。
ほんとにそんな便利なこと出来るかねぇ、っていうことで
初めての環境構築です。
手順メモを書こうと思ったけど
長いので諦めた。
こちらをご覧ください。
Selenium Gridで複数の実機ブラウザで自動テスト
ざっくりというと
まずはハブ端末の設定
この辺りのサイトでSelenium Standalone Serverののjarファイルをダウンロード。
http://www.seleniumhq.org/download/
ハブ端末上で
java -jar selenium-server-standalone-2.48.2.jar -role hub
とCMDを叩いて、立ち上げておきます。
記事執筆時点では2.48.2でした。
(新しめのブラウザだと動かない場合があるのでバージョンには要注意っぽいです。)
次にノード端末の設定
同じくjarファイルをダウンロードして
上述のサイトのように書くブラウザのインスタンス設定をjsonファイル(ここではnode.json)に書いておいて
java -jar selenium-server-standalone-2.xx.jar -role node -nodeConfig node.json -Dwebdriver.ie.driver={パス}\IEDriverServer.exe -log {パス}\node.log
とかでCMDを叩いて立ち上げ。
-logオプションでログ出力させているのはseleniumやっていると謎の動作が多くてログ解析が必要になるから。ここのログはWebDriverの制御がすべて出力されるみたいです。デバッグには欠かせません。
ここではIEDriverServerをオプションで指定していますが、chromedriverも指定するなら
-Dwebdriver.chrome.driver={パス}\chromedriver.exe
とかします。
ブラウザ本体firefox.exeのパスがデフォルトじゃない場合もここで指定したほうが良いですね。
たぶん -Dwebdriver.firefox.bin={firefox.exeのフルパス} みたいな感じだったと思う。
webdriverオプションはjson内でも指定できるんだろうけどよく知りません。
更に言うとMacOS/ChromeではChrome本体のパスを渡すのがうまくいかなかった(力不足です)ので、テストコードにCromeアプリのパスをChromeOptionに定義していました。(コレが結構面倒でした。。。)
さて、これでハブとノード端末は立ち上がったのを見てみます。
上述のサイトのGrid Consoleってやつです。
これでハブ/ノードが正常に立ち上がっているかを確認できます。
ではいよいよテストコードですね。
次に続きます。