LoginSignup
1

More than 5 years have passed since last update.

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

Posted at

目的

  • 本文は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のユーティリティクラス
  • 使うことが簡単

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1