WEBサイト自動試験用ライブラリ「Selenium3」のインストール

ソースからブラウザを操作する「Selenium」というライブラリについて記載します。これを使うとWEBサイトの自動試験が可能になります。

インストール

環境構築は以下の記事で簡単に構築できました。記事では「Selenium 2」となっていますが、現時点(2016/10/31)の最新は「Selenium 3」でしたが、ファイル名を読み替えるだけで済みました。

「Selenium2」のインストール手順と初めの一歩 (1/4):CodeZine(コードジン)

それだけだとあれなので細かい箇所ですがいくつか補足を。

・Selenium IDEからソースを出力するときのフォーマットですが、インデントの設定ができ、スペースの数や、タブでの出力が可能です。

Selenium IDE > オプション > フォーマット > 変更したいフォーマットを選択 > Indentを選択

20161031_selenium_ide_01

・Internet Explorer Driver Serverですが、現時点(2016/10/31)でも64bit版は入力が遅くなりましたので、32bit版で良いようです。

・Eclipseへのjavaファイルのインポートは以下の手順で行います。
プロジェクトで右クリック > インポート > 「ファイルシステム」を選択 > 次へ > 参照 > javaファイルを格納したディレクトリを選択 > インポートするjavaファイルを選択 > 完了

20161031_selenium_project_01

20161031_selenium_project_02

・FireFoxはHTMLエンジンがgeckoに変わったのでFirefoxDriverだけでは動きません。
以下から”Mozilla GeckoDriver”をダウンロードします。

Selenium Downloads

以下のように記載を変更します。

System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\Selenium\\drivers\\geckodriver.exe");
driver = new FirefoxDriver();

・junitは以下のサイトの方法で設置すると動作しました。
1. 単体テストとJUnit (2) | TECHSCORE(テックスコア)

プロジェクトの参照ライブラリにもjunit.jarを追加しました。

・テスト起動方法
テストクラスを右クリック > 実行(or デバッグ) > JUnitテスト

要素がいい感じになるまで待つ処理

Seleniumはすんなり動いて驚きますが、万事上手くいく訳ではないようです。
要素の検索やクリックの実行をソースで書いていくのですが、テンポよく進むので、「アニメーションと共にゆっくり現るボタンをクリックする」なんかのタイミングでかみ合わなくなります。その場合、少し待ってあげる処理を書きます。

以下の記事がものすごい判りやすかったです。
Selenium 2で非同期処理を待機する5つの方法

公式リファレンスは以下です。
http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-and-implicit-waits

APIリファレンスは以下です。
http://seleniumhq.github.io/selenium/docs/api/java/

出現するまで、とか、表示されるまで、とかの待機処理のショートカットみたいなのは以下に一覧になっています。
http://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html

おわり

ブラウザ毎に結構動作が変わるようで、ブラウザを変える度にソースを変更してあげないといけませんでした。個人的にはめちぇくちゃ凝った処理が書きたくなりますが、さらっと使う程度に抑えておかないと手間がもの凄そうでした。

以上