Google UI Automator のメインクラスを紹介する


目的

  • 本文はGoogle Ui Automatorのクラスについて紹介して、具体的な使い方を説明しない

Google UI Automatorとは

  • Googleが開発しているAndroid向け自動UIテストフレームワークです。
  • Espressoと違いは、自分のアプリをテストできてその他のアプリもテストできる
  • Ui Automator Viewを使ってアプリのresource id、textなど要素情報を取得できる
  • Android ChromeもUIテストできて、twitterやFBのログインテストに対してとても助かる

リンク

メインクラス

  • UiDevice
  • Configurator
  • --
  • By
  • BySelector
  • UiObject2
  • Until
  • --
  • UiObject
  • UiCollection
  • UiScrollable
  • UiSelector

詳細説明

UiDevice

目的

  • テスト中にデバイスのステータス情報を取得できる

主なメソッド

  • device.pressHome()
    • home键
  • device.pressBack()
    • back键
  • device.swipe(200,0,200, 300,180)
    • 下にスワィプして通知欄を表示する

Configurator

目的

  • 各動作の遅延とタイムアウトの値を設定する

主なメソッド

  • setActionAcknowledgmentTimeout(long timeout)
    • 動作タイムアウト、例えば、クリック、ボタンを押す、本文入力
    • デフォルトは3s
  • setKeyInjectionDelay(long delay)
    • キーボード入力の遅延設定
    • デフォルトは0s
  • setScrollAcknowledgmentTimeout(long timeout)
    • スクロール動作タイムアウト設定
    • デフォルトは200ms
  • setWaitForIdleTimeout(long timeout)
    • デフォルトは10s
  • setWaitForSelectorTimeout(long timeout)
    • デフォルトは10s

UiObject vs UiObject2

目的

  • アクションを実行する

区別

どうなものか
  • UiObject
    • ビューの表現である。再利用できる
    • 例えば、ダイアログ表示ボタンのUiObjectインスタンスで新しいダイアログを開けて閉じて、同じボタンのUiObjectインスタンスで再利用して操作できる
  • UiObject2
    • 要素の表現であ流。再利用できない
    • 上記の同じ例で、開けたダイアログを閉じた後に、以前作ったUiObject2インスタンスを再利用できなくて、新いUiObject2インスタンスの作成が必要
Objectを探す
  • UiObject
    • 以下の方法で探したいOjbectが表示されるかどうかことを確認できる

var ob = UiDevice.findObject(UiSelector)
if (ob.waitForExists(timeout)){
  ob.click()
}
  • UiObject2

UiDevice.wait(Until.findObject(SearchCondition, timeout) 
スクロール
  • UiObject

    • UiObjectのサブクラス: UiScrollableでいろいろな画面を操作できる
    • 画面に存在していない要素は、scrollIntoViewメソッドで簡単に画面に移動できる
  • UiObject2

    • UiObject2.swipe(Direction, percentage)
    • UiObject2.scroll(Direction, percentage)
    • 上記の二つのメソッドで、numberpickerやscrollviewなど画面を操作できる

BySelector vs. UiSelector

目的

  • 検索条件設定用クラス
  • UiSelector
    • UiObject用のオブジェクト検索条件
    • 例: UiDevice.findObject(UiSelector)
  • BySelector
    • UiObject2用のオブジェクト検索条件
    • 例: UiDevice.findObject(BySelector)

By vs. BySelector

  • BySelectorのユーティリティクラス
  • 使うことが簡単