読者です 読者をやめる 読者になる 読者になる

Intelligent Technology's Technical Blog

株式会社インテリジェントテクノロジーの技術情報ブログです。

Selendroidに関する補足(おまけ)

間藤です。

先日Selendroidをなるべく簡単に試すための手順を紹介しましたが、実はもっと簡単に動作させる手順もあります。今回は補足としてそちらの手順も紹介します。なお、今回はMacOS 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.javatypoを修正します。

(修正前)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.

このメッセージに従って、ブレイクポイントを設定してデバッグモードでテストを起動します。それから上記アドレスに接続すると、以下のような画面が表示されます。

f:id:IntelligentTechnology:20140703173214p:plain

これでWebView上のHTMLソースが確認できるようになります。weinreを利用すれば似たようなことはできますが。。。


話の流れでSelendroidを試してみましたが、本当はAndroidもAppiumのほうを使ってみたいと思っていたのでした。AppiumだとモバイルのChromeでブラウザテストができるようなことを書いているブログもあったりするので、時間があったら試してみたいと思ってます。