テスト自動化(7) Selendroid

こんにちは。
ヒューマンクレスト浅黄です。

Seleniumから、とうとうAndroidDriverとiPhoneDriverが削除されました。
Webアプリのスマホ検証を、皆さんはどのようにして自動化しているのでしょうか??

今回は、AndroidDriver互換として利用可能な、Selendroidの利用方法についてです。

環境

  • Mac OS X 10.9.2
  • java 1.7.0_51
  • Android SDK 22.6.1 (Platform-tools 19.0.1 : Build-tools 19)
  • AVD または 実機

手順

  1. Selendroidをダウンロードする
  2. SelendroidのServerを立ち上げる
  3. AndroidDriverで動かしていたソースをSelendroidDriverに書き換える
  4. ソースを実行する

たったこれだけで、Selendroidで動作するようになります!

1. Selendroid Serverをダウンロード
Selendroidのホームページから
selendroid-standalone-X.X.X-with-dependencies.jarファイルをダウンロードする。

2. SelendroidのServerを立ち上げる

java -jar selendroid-standalone-0.9.0-with-dependencies.jar

確認方法:https://localhost:4444/wd/hub/status

3. AndroidDriverで動かしていたソースをSelendroidDriverに書き換える

	//driver = new AndroidDriver(caps); 下記に変更する
	DesiredCapabilities caps = DesiredCapabilities.android();
	WebDriver driver = new SelendroidDriver(caps);

	driver.get("https://m.facebook.com/");
	WebElement elm = driver.findElement(By.name("email"));
	elm.clear();
	elm.sendKeys("humantest@gmail.com");
	elm = driver.findElement(By.name("pass"));
	elm.clear();
	elm.sendKeys("test");
	elm = driver.findElement(By.xpath("//*[@name='login']"));
	elm.click();
	System.out.println("Login完了");
	driver.quit();

※5行目以降の変更はなし

4. 実行する
エミュレータが自動で立ち上がり、テストが実行されます。

良いと思った事
①テストするまでの準備が減る
AndroidDriverでテストする際、
・WebDriverのapkファイルをエミュレータまたは実機にインストール
・端末側のWebDriverを起動する
・portを接続する
という手順がありましたが、Selendroid Serverが全て吸収します。

PC内にあるAVDやUSB接続した実機が一覧化され
指定したAndroidにテストします。

②過去のソースがそのまま利用可能(WebDriverの手法)
これは、そうとう良いです。過去の資産がそのまま活用できます。
弊社内でも、AndroidDriverにて実行していたソースは、Driver宣言箇所のみ変更し、
他の箇所は手を加えずにSelendroid化できました。

残念な事
①iPhoneDriverはサポート外(但し、iOSDriverが別途あります。が未確認)
②AndroidDriver以上の事はできない。(frameのスィッチができない)
③Gridで動かせなかった。
サポートしているようなのですが、動きませんでした。

SeleniumのAndroidDriverを利用していた場合、Selendroidは非常に移行しやすいと感じました。
しかも、AndroidのNativeアプリやHybridアプリもテスト可能です。
スマホにおけるテスト自動化Toolは様々ありますが、対象、環境、利用方法によって使い分けることによってより良い自動化ができるようになると思います。

このエントリーをはてなブックマークに追加

2件のコメント

ただいまコメントは受け付けていません。