10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AppiumでAndroid端末にインストールされたあらゆるアプリの操作を自動化してみよう

Last updated at Posted at 2019-10-21

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を読み込ませてアプリを起動

https___qiita-image-store.s3.amazonaws.com_0_6817_8ca40d0d-b427-6ae4-778d-f1e4cbdca5dd.jpeg

JSON Representationの部分に上記で作成したJSONを設定してStart Session をすることで
端末からpullしたapkを端末に送り込み、インスペクタが起動します。

Appium-inspector.png

上記のインスペクタを使えばxpathが取得できるので、あとはそれをつかってseleniumを書くようにスクリプトを書いたり、レコーディングの機能を使って端末の操作をコード化することができます。

コードは自分はWebdriver.ioで記述しますが、Ruby,Java,PythonなどでもOKです。
ここはSeleniumの話になってしまうので割愛します。

10
9
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
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?