seleniumer’s diary

「手動でExcelにスクショ貼付け」地獄からきました。テスト自動化しか望みがありません。java + selenium(since 2015/5)

selenium webdriver セットアップ

OSやWebブラウザの種類は日々増えていくばかりでなく、そのシェアは日によって変わり続けている。やっぱりテストは自動化だよね、

ってことでseleniumを導入したいのだけど、簡単なTipsが公開されていないので、どうせなら自分で書いてみようと。

seleniumでブラウザテストの自動化環境を整えるための初歩の初歩からのメモ

 

構築環境

対象のブラウザ

Internet ExplorerFirefoxChrome

Mac / Safariとかも必要。とりあえずWindows環境を整える。 


Java JDKをインストール
とりあえず最新版をここからDLしてセットアップ

java.com


Eclipse(日本語版 All in one)をダウンロード

Eclipse 日本語化 | MergeDoc Project

解凍してC:\eclipse とかフォルダを作ってその中に展開。
eclipse.exeを起動。とりあえずは無事に起動すればOK。


Seleniumのコアなプログラムファイル達を手に入れる

http://docs.seleniumhq.org/download/

なんだかいっぱいあってどれをDLしたらよいのか一見わからないですが

Selenium Client」+「Java」ってやつを選びます。

f:id:seleniumer:20150628211833j:plain

ついでに「Internet Explorer Driver Server」も

f:id:seleniumer:20150628212041j:plain

ダウンロードしたファイル達は解凍して次のElipseのJAVAプロジェクト内に配置します。

 

SeleniumJAVAプロジェクトを作成 @ 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で複数の実機ブラウザで自動テスト

www.techscore.com

 

ざっくりというと
まずはハブ端末の設定

この辺りのサイトで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に定義していました。(コレが結構面倒でした。。。)

sites.google.com 

さて、これでハブとノード端末は立ち上がったのを見てみます。

上述のサイトのGrid Consoleってやつです。

これでハブ/ノードが正常に立ち上がっているかを確認できます。

 

ではいよいよテストコードですね。

次に続きます。