Appiumで端末にインストールされたアプリの操作を自動化しクローリングしたいと思います。
AppiumはSeleniumのようなAPIでアプリの操作をできるツールです。
端末に入っているapkをpullしてAppiumで操作するのでどんなアプリでも操作ができます。
Appiumをインストール
Appium公式サイトからアプリをダウンロードします。
http://appium.io/
#端末に接続する方法
下記からは端末に接続する方法を書いていきます。
下記に公式のドキュメントがありますので、うまくいかない場合はチェックしてみてください。
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
下記の項目を取得することでAppiumのSessionを開始することができます。
appPackage
appActivity
platformVersion
deviceName
app(任意)
Packageの取得
その後、PCにスマートフォンをつなぎ(自分の場合はAndroidです)、下記のコマンドを実行
adb shell pm list packages
パッケージ一覧を取得できますので、そこから操作したいアプリのパッケージ名をメモしておきます。(package:
は不要)
Launch Activityの取得
操作したいアプリを立ち上げ、下記のコマンドを実行することでLaunch Activityを取得することができます。
adb shell dumpsys window windows | grep -E "mCurrentFocus"
メモしておいてください。
deviceNameの取得
adb shell getprop ro.product.model
これもメモしておきます。
platformVersionの取得
adb shell getprop ro.build.version.release
これもメモ
appの取得(任意)
ここではapkファイルを端末からpullして、PCのapkへのパスを取得します。
まず、端末内のアプリのパスを取得します。
adb shell pm list packages -f | grep com.hoge
その後、上記で取得できたパスを使ってapkファイルをダウンロードします
adb pull /data/app/com.hoge-2NCYKBV5gI-ISQMHfmhcoA==/base.apk
ダウンロードしたapkのPCでのパスをメモしておいてください。
これまでにメモしておいた内容で下記のJSONを作成します。
{
"automationName": "Appium",
"platformName": "Android",
"appPackage": "上記で取得した値",
"appActivity": "上記で取得した値",
"platformVersion": "上記で取得した値",
"deviceName": "上記で取得した値",
"app": "上記で取得した値(任意)"
}
JSONを読み込ませてアプリを起動
JSON Representationの部分に上記で作成したJSONを設定してStart Session をすることで
端末からpullしたapkを端末に送り込み、インスペクタが起動します。
上記のインスペクタを使えばxpathが取得できるので、あとはそれをつかってseleniumを書くようにスクリプトを書いたり、レコーディングの機能を使って端末の操作をコード化することができます。
コードは自分はWebdriver.ioで記述しますが、Ruby,Java,PythonなどでもOKです。
ここはSeleniumの話になってしまうので割愛します。