Webアプリのテストを行うとき、Webブラウザからアクセスして操作して動作確認しますが、みなさんはその操作を手動でしていますか?
ある程度決まった操作だったりしたら、それを自動化してみたいなぁと思うことはあると思います。
同じような操作を手動で行うのが面倒だなぁと感じ、調べてWebブラウザ操作を自動化することができましたので、今回はその方法についてまとめました。
必要なものは下記になります。
今回は、私は Windows 10 上で実現しましたが、上記は Linux や Mac 上で提供されているため、ほかのプラットフォームでも実現可能だと思います。
手順は下記のとおりです。
必要なものを準備
それではまず、必要なものを準備します。
Webブラウザ:Chrome
Google Chromeの公式サイトからダウンロードできます。インストール方法は割愛します。
Java用のEclipse
Eclipseの公式サイトからダウンロードできます。Java用のEclipseだとJDKも含んでいるため、別途JDKをインストールする必要もないため便利です。
下記で説明するseleniumの最新はjava8以上でサポートされているので、最新のEclipseを利用します。インストール方法は割愛します。
selenium
これが一番重要で、Webブラウザの自動操作を行うためのコアになります。
ライブラリ と Webブラウザのドライバ を取得します。
公式サイトのダウンロードページからダウンロードします。
ダウンロードページ: http://www.seleniumhq.org/download/
まず、ライブラリから
Java版 や C# , Ruby , Python , Javascript(Node) などいろいろなライブラリがありますが、今回は、Java版のものを使います。
上記公式サイトのダウンロードページから Java版のライブラリをダウンロードします。
記事作成日の最新は selenium-java-3.5.2 です。
次に、Webブラウザのドライバ
様々なWebブラウザ向けのドライバが提供されていますが、今回は Chromeのものを使います。
上記公式サイトのダウンロードページから Chromeのドライバをダウンロードします。
記事作成日の最新は 2.31 です。
Windows版は32bit向けしかありませんが、問題ありません。
これで必要なものがすべてそろったので、次のステップに進みます。
EclipseでJava用のProjectを作成
Java版のseleniumを使うため、Java用のProjectを作成します。
プロジェクト名 を入力し(例. JavaTestProject)、JavaSE-1.8 が選択しているのを確認し、[完了]ボタンを押してProjectを作成します。
Project作成後に、先ほどダウンロードしてきたseleniumライブラリとドライバを導入します。
Projectフォルダ直下にlibフォルダを作成し、zip圧縮されたseleniumライブラリを展開したものを格納します。
また、Projectフォルダ直下にdriverフォルダを作成し、zip圧縮されたseleniumドライバを展開したものを格納します。
seleniumライブラリを関連付けしてきます。
左にあるパッケージ・エクスプローラーから作成したProject上で右クリックを押し、プロパティーを選択すると、Projectのプロパティーウィンドウが表示されます。
Java のビルド・パスを選択し、ライブラリータブを押します。
右に[JAR の追加(J)...]ボタンがあるので、そのボタンをおしてseleniumライブラリを追加します。libフォルダに入っているライブラリも全て追加します。
Projectの準備は完了しました。次に自動化を行うためのコードを作成します。
自動化を行うためのコードを作成
srcフォルダ内に、自動化を行うためのコードを作成していきます。
srcフォルダに適当なパッケージを作成し、そのパッケージ内に、自動化を行うためのファイルを生成します。
(例. パッケージ名:local_test, ファイル名:AutoTest)
生成したファイルに、自動化を行うためのコードを書いていきます。
以下のサンプルコードは、yahooへアクセスして、idがsearchの文字列が"ウェブ"と一致するかのチェックを行うコードになります。
package local_test;package local_test;
import static org.junit.Assert.*;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class AutoTest {
@BeforeClass
public static void Setup() {
System.setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe");
}
@Test
public void test1() {
WebDriver driver = new ChromeDriver();
driver.get("https://www.yahoo.co.jp");
WebElement elTitle = driver.findElement(By.id("search"));
assertEquals("ヤフーページが表示されていること。", elTitle.getText(), "ウェブ");
driver.quit();
}
}
コードが書けたら、準備完了です。
最後に実行し、Webブラウザ操作が自動化できたか確認してみます。
動作確認
Projectにフォーカスを当てて、メニューの"実行" -> "実行" -> "1 JUnit テスト" を選択すると、サンプルソースが実行されます。
実行すると、自動的にChromeが起動され、Yahooのページへアクセスし一定時間後にChromeが終了すると思います。
ちなみに、assert* 関数を入れているので、JUnitの実行結果も表示されています。
左下の[JUnit]タブを押すと、実行結果を確認できます。
いかがでしたか。
今回は、少しの関数を使用してWebブラウザ操作を自動化をしてみましたが、ほかにも様々な関数を組み合わせることで、より複雑な動作などを自動化させることもできます。
皆さんもいろいろと試してみてください。
では!