LoginSignup
15
17

More than 5 years have passed since last update.

android monkeyrunner 使ってみた

Posted at

monkeyrunner とは

  • android テストのためのツール
    • 座標指定で UI 制御が可能
  • Python で記載したプログラムを使用し、画面遷移の自動テストなどを可能にする

    • 下記コマンドで実行可能

    "Android SDK の path"/tools/monkeyrunner sampletest.py

サンプルプログラムの書き方

sampletest.py
# 使用する monkeyrunner モジュールをインポート
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

# デバイスに接続
device = MonkeyRunner.waitForConnection()

# android package をインストール
device.installPackage('myproject/bin/MyApplication.apk')

# package の名前をセット
package = 'com.example.android.myapplication'

# package 内の activity の名前をセット
activity = 'com.example.android.myapplication.MainActivity'

# 起動するアプリの activity の名前をセット
runComponent = package + '/' + activity

# apk の起動
device.startActivity(component=runComponent)

# テストしたい処理(例)
for i in range (1, 5):                    # 下 2 行の処理を 4 回繰り返す
    MonkeyRunner.sleep(5)                 # 5[sec] 停止する
    device.touch(85, 200, "DOWN_AND_UP")  # 座標(85, 200) の位置をタップする

# スクリーンショットを撮る
result = device.takeSnapshot()

# 撮ったスクリーンショットを保存する
result.writeToFile('myproject/shot1.png','png')
  • 上記の例では、任意のアプリを起動し、指定したポイントを繰り返しタップしている

座標の位置特定には

  • MonkeyRunner クラスを用いることでボタン押下などのテストが自動化できることはわかった
  • しかし、上記のサンプルではタップする座標はあらかじめ把握しておく必要がある
  • そこで、タップした座標の位置を知るために MonkeyRecorder というクラスが有用である
  • 使用方法は、以下の様な python ファイルを用意しておき、MonkeyRunner と同じように呼び出す
samplerecorder.py
from com.android.monkeyrunner import MonkeyRunner
from com.android.monkeyrunner.recorder import MonkeyRecorder
device = MonkeyRunner.waitForConnection()
MonkeyRecorder.start(device)
  • 上記ファイルを実行すると以下のように、接続しているデバイスの画面の操作の履歴画面が表示される

monkeyrecorder_スクリーンショット.png

  • 左側にはデバイス画面が表、右には操作履歴が表示され、操作履歴はタップした位置の座標も表示される
  • これを用いて MonkeyRunner を使用する際に知りたい座標の取得が可能となる

まとめ

  • monkeyrunner の MonkeyRunner クラスを使えば、"スイッチの ON/OFF を 1000 回繰り返す" といったようなことも容易に可能となる
  • MonkeyRecorder を使用することでデバイスの座標取得なども手軽にできる
15
17
0

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
15
17