デジタルチャイルド日記

コンピュータ関連のいろいろメモを残していく子供部屋です。

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のダウンロード>

f:id:digitalchild:20180630123833p:plain

 

 ダウンロードされた「IEDriverServer_x64_3.13.0.zip」「selenium-java-3.13.0.zip」をそれぞれ解凍して、eclipseに取り込みます。

f:id:digitalchild:20180630124818p:plain

IEDriverServer_x64_3.13.0.zip

 解凍後、eclipseのプロジェクト内に、IEDriverフォルダ(名前は適当です)を作成して、IEDriverServer.exeをコピーします。

selenium-java-3.13.0.zip

解凍後、eclipseのビルドパスから、すべてのjarファイルを追加します。

★libsフォルダ配下もすべて。

 

IEの事前設定

IEのインターネットオプションから、すべてのゾーンに対して、「保護モード有効にする」にチェックを入れます。さらに詳細設定の中の「拡張保護モードを有効にする」のチェックを外します。 

f:id:digitalchild:20180630134424p:plain

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

以上、とりあえずのメモでした。

 

※補足

上記、プログラムを繰り返し呼び出すことで、サイトへの攻撃のようなことも可能になるので、注意しましょう。