間藤です。
先日Selendroidをなるべく簡単に試すための手順を紹介しましたが、実はもっと簡単に動作させる手順もあります。今回は補足としてそちらの手順も紹介します。なお、今回はMac(OS X Mavericks v10.9.4)で動作確認しました。
Quick Start
前回はGetting Startedの記述をトレースしましたが、今回はQuick Startを参考にします。但し、ここに記載されている内容はあまり追いかけません。注目するのは冒頭の記述です。Githubリポジトリのリンクがあるので、これをcloneして使っていきます。今回のゴールは、このリポジトリに含まれているJavaで書かれたテストをMavenを使って実行することです。
demoproject-selendroid
前述の通りこのリポジトリをcloneしましょう。
> git clone https://github.com/selendroid/demoproject-selendroid.git
ちょっとした手直し
cloneしたディレクトリにpom.xmlが配置されていることからわかるようにMavenが使えます。お使いの環境にインストールされていなければインストールしてください。ちなみに私の環境はバージョン3.0.5です。
cloneしたら後はmvnコマンド一発でテストが実行されるのかと思ったのですが、うまくいきませんでした。割と最近でもコミットされているようなので、今後対応されるかもしれませんが、念のため私が修正した箇所を以下にメモしておきます。
Selendroidのバージョンを変更
pom.xmlに記載されているSelendroidのバージョンを0.9.0から0.10.0に変更します。
<selendroid.version>0.10.0</selendroid.version>
テストプログラムを移動
srcディレクトリ配下にtestディレクトリを作成し、src/main/javaをそこに移動します。つまり、src/test/java配下にテストプログラムが移動されることになります。(Mavenのテスト対象にするためにこのステップが必要になります)
typoを修正
SelendroidIntegrationTest.javaのtypoを修正します。
(修正前)selendroidServer.lauchSelendroid();
(修正後)selendroidServer.launchSelendroid();
Selendroidサーバを起動するよう修正
サンプルとしてテストのクラスが4つ含まれています。そのうちの2つは、Selendroidサーバを起動するようになっていないので、そのためのコードを追加します。手動でサーバを起動しておいてもよいのですが、コマンド一発でテストが実行されることを確認するのが今回のターゲットなので修正します。修正するのは、UserRegistrationTest.java(ネイティブアプリのテスト)とEmployeeDirectoryTest.java(ハイブリッドアプリのテスト)です。
なお、以下のようにテスト対象のアプリ(apkファイルのパス)を指定するようにして下さい。
SelendroidConfiguration config = new SelendroidConfiguration(); config.addSupportedApp("src/main/resources/employee-directory.apk"); // テスト対象を指定 selendroidServer = new SelendroidLauncher(config); selendroidServer.launchSelendroid();
以上が修正点ですが、今後も更新される可能性がありますから、参考程度にしかならないかもしれません。
テストの実行
後はテストを実行するだけです。
「mvn test」でうまくいくかと思ったんですが、どうも動作が安定しません。テストがエラーになったり、エミュレータが起動することもありました。原因をよく調べていないので、私の手順がよろしくないのかもしれませんが、以下のようにテスト対象を明示して実行することでうまくいきました。
> mvn test -Dtest=io.selendroid.demo.webui.EmployeeDirectoryTest
4つのテストを一発で実行するなら、スクリプトファイルを作成して、その中で上記のような形式でそれぞれmvnコマンドを記述します。(スマートな方法とはいえませんが)
補足の補足
この機会にSelendroid Inspectorも試用してみました。PhoneGapで作成したハイブリッドアプリの解析に便利かもしれません。
使い方は簡単です。
Selendroidサーバを起動したら、以下のURLにブラウザでアクセスします。
http://localhost:4444/inspector
但し、セッションが存在する状態で実行しないと以下のようなメッセージが出るだけです。
Selendroid inspector can only be used if there is an active test session running. To start a test session, add a break point into your test code and run the test in debug mode.
このメッセージに従って、ブレイクポイントを設定してデバッグモードでテストを起動します。それから上記アドレスに接続すると、以下のような画面が表示されます。
これでWebView上のHTMLソースが確認できるようになります。weinreを利用すれば似たようなことはできますが。。。
話の流れでSelendroidを試してみましたが、本当はAndroidもAppiumのほうを使ってみたいと思っていたのでした。AppiumだとモバイルのChromeでブラウザテストができるようなことを書いているブログもあったりするので、時間があったら試してみたいと思ってます。