*

Selenium入門その3[Selenium WebDriver(Java/Junit4)の使い方]

公開日: : 最終更新日:2016/12/11 Eclipse, Java, JUnit, Selenium , ,


スポンサードリンク



WebDriverでは、予め中継サーバを起動しなくても、テスト実行時にブラウザ拡張機能や、OSのネイティブ機能を利用してブラウザ操作を再現することができます。

今回はEclipseを利用して
言語:Java、テストフレームワーク:JUnit4
でSelenium WebDriverを使ったテストの実装方法の説明をさせていただきます。

なお、本エントリーはSelenium3を対象としてものではございません。
(WebDriverという意味ではSelenium2もSelenium3も同じではるのですが・・・)

Selenium3については以下のエントリーもご覧いただければと思います。
Selenium入門その6[Selenium3でWebDriver(Java/Junit4)の環境を作成しEdge,Chrome,Firefoxで確認してみる]

本エントリーの内容は以下の通りです。

  1. EclipseでSelenium WebDriverの利用環境を構築
  2. テストコードの記載方法
  3. マルチブラウザ対応


1.EclipseでSelenium WebDriverの利用環境を構築

EclipseでSelenium WebDriverを利用できるよに環境を準備します。

Gradleを利用すると簡単にできるのですが、今回は必要なライブラリを自前で用意して環境を構築したいと思います。

必要なライブラリをダウンロード

javaでseleniumを利用するために必要なファイルを公式サイトからダウンロードします。

http://www.seleniumhq.org/download/
にアクセスして、以下の画像の赤枠部分をクリックして「Selenium Client & WebDriver Language Bindings」のJava版をダウンロードします。
スクリーンショット 2016-05-01 21.34.46

2016/05/01現在のファイルは「selenium-java-2.53.0.zip」となっています。

Eclipseを起動してプロジェクトを作成

プロジェクトの作成

SeleniumTestと言う名前でプロジェクトを作成します。
スクリーンショット 2016-05-01 21.53.19

スクリーンショット 2016-05-01 21.53.58

必要なライブラリの追加

プロジェクトに必要なライブラリを追加します。

まずlibフォルダをプロジェクトに追加します。
SeleniumTestのプロジェクトを選択し、右クリックメニューの[新規]-[フォルダ]をクリックします。
スクリーンショット 2016-05-01 21.59.03

フォルダ名にlibを入力し「完了」ボタンをクリックします。
スクリーンショット 2016-05-01 22.00.49

selenium-java-2.53.0.zipを解凍します。
解凍したフォルダに存在する
selenium-java-2.53.0.jarとlibsフォルダを先ほど作成したlibにドラッグ&ドロップします。

パッケージ・エクスプローラーは以下のようになったはずです。
スクリーンショット 2016-05-01 22.08.19

次にlib配下のjarをビルドパスに追加します。
SeleniumTestのプロジェクトを選択し、右クリックメニューの[プロパティ]をクリックします。
スクリーンショット 2016-05-01 22.11.22

「Javaのビルド・パス」をクリックし、「ライブラリ」タブ、「jarを追加…」をクリックします。
スクリーンショット 2016-05-02 11.21.54

lib配下の全てのjarを選択後に「OK」ボタンをクリックします。
スクリーンショット 2016-05-02 11.27.34

「OK」ボタンをクリックして変更を確定させます。
スクリーンショット 2016-05-02 11.31.46


2.テストコードの記載方法

テストの作成と実行

前回(Selenium入門その2[SeleniumIDEの使い方])で利用したテスト対象のHTMLと録画した操作を流用してテストケースを作成、実行しますので、テストケースが実行できる環境を準備ください。

クラスの作成

パッケージ名:com.example.tests
クラス名:Test1
でクラスを作成します。

パッケージ・エクスプローラーでsrcフォルダを選択後に右クリックメニューの[新規]-[Junitテストケース]をクリックします。
スクリーンショット 2016-05-02 11.40.39

パッケージ名にcom.example.tests、名前にTest1を入力し、setUp()とtearDownをチェック後に「完了」ボタンをクリックします。

クラスの編集

Test1.javaを以下のように編集します。
(だったらテストケース作成時の細かい指定は無意味ですね・・・)

なお、Webサーバを用いないでテストを実行する場合は19行目をPCのローカルパスに変更すれば動作します。

テストケースの実行

Test1.javaを選択後にマウスの右クリックメニューの[実行]-[Junitテスト]をクリックしテストケースを実行します。
スクリーンショット 2016-05-02 11.55.29

FireFoxが起動しテストが実行されることが確認できます。

って、早過ぎて出来ねー!!、無理と思いますので
testメソッドにスリープを入れてみました。

これで確認OKですね!

テストケースのコードの説明

プライベートメンバ

・driver変数
driverはWebDriverのインスタンスです。このインスタンスを初期化し、操作することでブラウザの動きをエミュレートできます。

また、インスタンスを初期化方法でエミュレートするブラウザ(Firefox,IE,Chrome等)を指定できます。

driverに設定を施すことでブラウザが動作する時の各種設定が行えます。

driverの初期化と設定については後述させていただきます。

・baseUrl変数
テスト対象のWebアプリケーションのbaseUrlを格納します。

setUpメソッド

Junitの@Beforeアノテーションが付与されており、単一のJunitテストケースが実行される前に実行されます。

処理内容としては、driverにFirefoxDriverのインスタンスを作成してセットしています。
あとは、baseUrlにWebアプリケーション(と言ってもHTMLですが)のベースURLをセットしています。

tearDownメソッド

Junitの@Afterンが付与されており、単一のJunitテストケースが実行された後に実行されます。

処理内容としては、driverのquitメソッドを呼び出しており、テストで起動したFireFoxを終了します。

testメソッド

この処理は「Selenium入門その2[SeleniumIDEの使い方]」
で説明させていただいた内容と全く同じとなりますが、同じ説明を記載させていただきます。

テスト対象のURLをオープン
id=nameInputIdのエレメントの入力値をクリア
id=nameInputIdのエレメントに”セレニウム男”を入力
name=”sexName”である最初に出現するエレメントをクリック
id=”jobSelectId”でラベルが”その他”のエレメントを選択
CSSセレクタが”button”のエレメントをクリック

なお、Seleniumで利用可能なコマンド一覧は別エントリーで取り扱おうと考えております。

マルチブラウザ対応

前述の例ではテストを実行するブラウザがFirefoxとなっていました。
他のブラウザでテストを実行する方法の最もシンプルな実現方法を説明させていただきます。

Seleniumは、PC用のブラウザだけでなく、モバイル(スマートフォン)端末のブラウザにも対応していますが、本エントリーではPC用のブラウザをターゲットとさせていただきます。

基本的には、driver変数の初期化方法を変更するだけで他のブラウザで動作させることが可能です。

以降では一般的によく利用されているChrome、IE、Edge、Operaの4つについて説明させていただきます。

なお、各ブラウザのインストールパスは、お使いの環境により異なる場合がございますので、適切な値で読み替えてください。

Chrome

Chrome DriverのダウンロードとEclipseへの反映

http://www.seleniumhq.org/download/
にアクセスし、少し下方に移動して、以下の赤枠部分をクリックします。
スクリーンショット 2016-05-02 15.13.42

各ブラウザのドライバは各ブラウザの提供者が作成していますので、Googleのページに移動します。
お使いの環境用のファイルをクリックしダウンロードします。
スクリーンショット 2016-05-02 15.18.08

Eclipseのパッケージ・エクスプローラーでdriverと言う名前でファイルを新規作成し、ダウンロードしたzipファイルを解凍し生成されたファイルをドラッグ&ドロップします。
以下の画像はmacの時の画面となりますので、Windowsの場合はchromdriver.exeが追加されているはずです。
スクリーンショット 2016-05-02 15.33.47

コードの変更

変更するのはsetUpメソッドとその修正に必要なimport文だけです。

変更後のsetUpメソッドは以下の通りです。

ChromeOptions以外は特に説明不要かと思います。
options.setBinaryにつきましてはWindowsの場合は記載しなくてもほぼ動作します。

ChromeOptionsにつきましては、別エントリーで取り扱わせていただく予定ですが、
Chrome以外のDriverにも同様にOptionsが存在しており、ブラウザが提供している設定を変更することが可能です。
どのような設定が変更できるかは各ブラウザによって異なります。

追加したimport文は以下の通りです。

テストケースを実行するとChromeで実行されます。

IE

IE DriverのダウンロードとEclipseへの反映

http://www.seleniumhq.org/download/
にアクセスし、以下の赤枠部分をクリックします。
スクリーンショット 2016-05-02 15.48.01

Chromeの時と同様にダウンロードしたzipを解凍し、生成されたIEDriverServer.exeをdriverフォルダにドラッグ&ドロップします。

コードの変更

変更するのはsetUpメソッドとその修正に必要なimport文だけです。

変更後のsetUpメソッドは以下の通りです

追加したimport文は以下の通りです。

Edge

Edge DriverのダウンロードとEclipseへの反映

http://www.seleniumhq.org/download/
にアクセスし、以下の赤枠部分をクリックします。
スクリーンショット 2016-05-02 16.47.46

MSのサイトに移動しますので、以下の赤枠の部分をクリックしてダウンロードを開始します。
スクリーンショット 2016-05-02 16.54.12

Chromeの時と同様にダウンロードしたzipを解凍し、生成されたMicrosoftWebDriver.exeをdriverフォルダにドラッグ&ドロップします。

コードの変更

変更後のsetUpメソッドは以下の通りです

追加したimport文は以下の通りです。

Opera

Opera DriverのダウンロードとEclipseへの反映

http://www.seleniumhq.org/download/
にアクセスし、以下の赤枠部分をクリックします。
スクリーンショット 2016-05-02 16.47.46

ページが切り替りますので、必要な物をダウンロードします。
スクリーンショット 2016-05-02 17.11.53

Chromeの時と同様にダウンロードしたzipを解凍し、生成されたoperadriver.exe(macの場合はoperadriver)をdriverフォルダにドラッグ&ドロップします。

コードの変更

変更後のsetUpメソッドは以下の通りです。

あれ!、OperaなのにChromeOptionsになってるよ!!!
そうです、それで正しいのです。

元々OperaのChromeもWebKitを元に開発されており
(WebKitは、元々アップルのMac OS Xに搭載されるSafariのレンダリングエンジン)
WebDriverにもその名残があります。

いまはChromeってWebKitなのかは不明ですが・・・
名残はあっても袂を分かった事は有名ですね。

以上で「Selenium入門その3[Selenium WebDriver(Java/Junit4)の使い方]」は終了です。


スポンサードリンク



関連記事

JUnit入門その4[Eclipse4.4のJUnitプラグインとDBUnitの併用(環境構築と基本)]

JUnit入門その1 JUnit入門その2[Eclipse4.4のJUnitプラグインのasse

記事を読む

Selenium入門その4[Selenium WebDriver(Java/Junit4)の基本コマンド]

前回はEclipse環境でSelenium WebDriverでJava/Junit4を利用したテス

記事を読む

Eclipse4.4(Java)におけるビルド・パス関係の設定方法[ビルド・クラスパスの順序およびエクスポート設定]

Eclipse4.4(Java)におけるビルド関係のビルド・パス上の「ビルド・クラスパスの順序および

記事を読む

Eclipse4.3のチュートリアル機能で”Hello World”アプリケーションの作成方法を説明する。

Eclipseのインストールが終了したので、各画面エリアの名称の説明、各画面エリアの使い方の説明を

記事を読む

JDK8(java 8)の新機能のラムダ式の利用方法[その1:概要]

「JDT betaを利用してJDK8対応のEclipse開発環境を作成する」では、「Eclipse」

記事を読む

Javaによる非同期処理入門その1[非同期処理の実装方法の概説]

Javaによる非同期処理に関するエントリーを前々から作成したいと思っていたのですが、ついに作成してみ

記事を読む

Eclipse(4.4)でJava言語のリファクタリング機能の使い方[「メソッド・シグニチャーの変更」と基本的な抽出処理、及び「インライン化」、「定数の抽出」]

本エントリーでは、Eclipse(4.3)でJava言語のリファクタリング機能の使い方に引き続き

記事を読む

Selenium入門その1[自動テストの概要]

ソフトウェア業界って3Kですよね・・・ アジャイル開発手法が話題に上がるようになってもう10年

記事を読む

Java8の新機能に完全対応のEclipseメジャーリリースとなる Eclipse 4.4 Luna (ルナ) が遂にリリース

Eclipse メジャーリリースとなる Eclipse 4.4 Luna (ルナ) が遂にリリースさ

記事を読む

JUnit入門その5[DBUnitの概要説明]

前回エントリーでは「JUnit入門その4」と題してDBUnitをEclipseで動作させるための環境

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Spring5入門[STS(Spring Tool Suite)で簡単なWebアプリの典型的なユニットテストの実現方法]

前回は「Spring入門」で、Spring MVCを利用した簡単なWe

Spring5入門[STS(Spring Tool Suite)の環境作成と簡単なWebアプリの作成]

Struts1ももう過去の遺物になり、SAStrutsもEOLとなりも

Selenium入門その6[Selenium3でWebDriver(Java/Junit4)の環境を作成しEdge,Chrome,Firefoxで確認してみる]

Selenium3も3.0.1がリリースされましたし、今後は本格的にS

Selenium利用時のトラブルシューティング方法[クリック編]

Seleniumは便利なテスト自動化ツールですし、今後は更なる利用者の

Java8のラムダ式とStream APIを利用してコーディング量の削減サンプル集

Java8になりラムダ式と「Stream API」が利用できるようにな

→もっと見る

Optimization WordPress Plugins & Solutions by W3 EDGE
PAGE TOP ↑