ソースからブラウザを操作する「Selenium」というライブラリについて記載します。これを使うとWEBサイトの自動試験が可能になります。
インストール
環境構築は以下の記事で簡単に構築できました。記事では「Selenium 2」となっていますが、現時点(2016/10/31)の最新は「Selenium 3」でしたが、ファイル名を読み替えるだけで済みました。
「Selenium2」のインストール手順と初めの一歩 (1/4):CodeZine(コードジン)
それだけだとあれなので細かい箇所ですがいくつか補足を。
・Selenium IDEからソースを出力するときのフォーマットですが、インデントの設定ができ、スペースの数や、タブでの出力が可能です。
Selenium IDE > オプション > フォーマット > 変更したいフォーマットを選択 > Indentを選択
・Internet Explorer Driver Serverですが、現時点(2016/10/31)でも64bit版は入力が遅くなりましたので、32bit版で良いようです。
・Eclipseへのjavaファイルのインポートは以下の手順で行います。
プロジェクトで右クリック > インポート > 「ファイルシステム」を選択 > 次へ > 参照 > javaファイルを格納したディレクトリを選択 > インポートするjavaファイルを選択 > 完了
・FireFoxはHTMLエンジンがgeckoに変わったのでFirefoxDriverだけでは動きません。
以下から”Mozilla GeckoDriver”をダウンロードします。
以下のように記載を変更します。
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
おわり
ブラウザ毎に結構動作が変わるようで、ブラウザを変える度にソースを変更してあげないといけませんでした。個人的にはめちぇくちゃ凝った処理が書きたくなりますが、さらっと使う程度に抑えておかないと手間がもの凄そうでした。
以上