Seleniumでテスト
ひと昔前に、Waitrでテストの自動化をしたことあるのですが、最近、ポチポチと手でたたくことが増えており、最近の自動化事情はどうなんだろうということで、Seleniumでのテスト自動化のメモです。
Seleniumって。
Seleniumは、実際はSelenium WebDriverといいます。WebDriverとは、ブラウザの情報を外部から読んだり書いたりできる為のドライバーってことですかね。
でもって、それを実装したものが、Selenium WebDriverってことで。(たぶん)
Selenium - Web Browser Automation
★なんか、W3CでもWebDriverが策定されているとかなんとか・・・
環境準備
Selenium WebDriverはいろいろなプログラム言語をつかって、ブラウザにアクセスすることができますが、今回はJavaでやってみます。(Javaがメインで扱っているから)
Jenkinsなどで、ビルドをしているチームなどだと、Jenkinsビルドが終わったら、テストを起動するなんてことも可能らしいです。
ただ、気楽にテストするならRubyがおすすめですかね。
今回のテスト環境
IE11
準備するもの
- Eclipse ... 開発用のIDEです。
- Java1.8以降 ... 3.1あたりでjava1.8が必要になった?英語はわかりませんw
- Selenium WebDriver ... 上記Seleniumのサイトからダウンロードしてください。
- Internet Explorer Driver Server ... IE用のドライバサーバです。
今回はIE用ということですが、他ブラウザの場合、下の画面の下部にドライバがあるようですので、そちらを参照ください。
<WebDriverとDriverServerのダウンロード>
ダウンロードされた「IEDriverServer_x64_3.13.0.zip」「selenium-java-3.13.0.zip」をそれぞれ解凍して、eclipseに取り込みます。
IEDriverServer_x64_3.13.0.zip
解凍後、eclipseのプロジェクト内に、IEDriverフォルダ(名前は適当です)を作成して、IEDriverServer.exeをコピーします。
selenium-java-3.13.0.zip
解凍後、eclipseのビルドパスから、すべてのjarファイルを追加します。
★libsフォルダ配下もすべて。
IEの事前設定
IEのインターネットオプションから、すべてのゾーンに対して、「保護モード有効にする」にチェックを入れます。さらに詳細設定の中の「拡張保護モードを有効にする」のチェックを外します。
IEを再起動したら、準備完了です。
プログラム作成
実際のテストをするプログラムを作成します。
今回は、サンプルなので、mainを使ってますが、実際のテストの場合、JUnitからを使って同様のロジックを作成することになると思います。
<ソース>
package jp.digitalchild.sample.serenium; import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; public class WebDriverSample { public static void main(String[] args) { WebDriver driver; // IEDriverServerの起動 System.setProperty("webdriver.ie.driver", ".\\IEDriver\\IEDriverServer.exe"); driver = new InternetExplorerDriver(); // Googleに遷移する。 driver.get("http://www.google.co.jp"); // タイトルをコンソールに出してみる。 System.out.println(driver.getTitle()); // 画面を終了 //driver.quit(); } }
あとはeclipseから普通に動かしてみると、以下のようなコンソールが出力され、IEが起動して、googleに遷移しているはずです。
<コンソール>
Started InternetExplorerDriver server (64-bit) 3.13.0.0 Listening on port 24287 Only local connections are allowed 情報: Detected dialect: W3C [土 6 30 13:53:26 JST 2018] Google
以上、とりあえずのメモでした。
※補足
上記、プログラムを繰り返し呼び出すことで、サイトへの攻撃のようなことも可能になるので、注意しましょう。