Appium + Android APP in Windows use inspector

# Outline

Native APPのテスト自動化をおこなうにあたり、inspector を使って各パーツのlocation(XPath) を知る必要がある。
テスト自動化では、このlocationをもとに、touchなどの操作を行うからである。
ここでは、そのinspectorを使い、xpathをとるまでの手順を整理したものである。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/14f312cb-0900-4c3b-911a-24c793923954.png)

# environment

| Item | Version | Note |
|:-----------|:------------|:-------------|
| Windows| 10        | |
| Java| 11        | |
| Android Studio| 2021.2.1 Patch 1        | |
| Appium Server Desktop| 1.18        | |

# install JAVA

Javaが全般的に必要になるため、installする

https://www.oracle.com/jp/java/technologies/javase/jdk11-archive-downloads.html

Environment Variablesの設定をする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/1a2fe59d-f5bc-31d6-a1ce-de0b887247ca.png)


Ex. (installした環境、versionによって異なります)
| Name| Value | 
|:-----------|:------------|
| JAVA_HOME| C:\Program Files\Java\jdk-11.0.15        | 



# install Android Studio

主にadbを使用するためにinstallする

https://developer.android.com/studio?hl=ja

一通りinstallする。

Tool -> SDK Manager -> Android SDK 

こちらにて、SDK Platform Tools がinstallされていることを確認する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/e0e5bbdb-9482-be33-f44f-a66068077985.png)



Environment Variablesの設定をする

ANDROID_HOMEのpathは "Tool -> SDK Manager -> Android SDK "で確認ができる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/1a2fe59d-f5bc-31d6-a1ce-de0b887247ca.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/6fdfe497-14b3-949e-7a18-94878ae8d100.png)



Ex. (installした環境、versionによって異なります)
| Name| Value | 
|:-----------|:------------|
| ANDROID_HOME| C:\Users\xxxxx\AppData\Local\Android\Sdk        | 


# install Appium Server Desktop

今回、最新ではなく1.18をもちいた。
1.20あたりから、inspectorはserverと分離された。
今時点、ver 1.21でinspectorをtryしてみたが、1.18と同じ結果がでず、うまくいかなかった。
そのため、1.18を用いた

https://github.com/appium/appium-desktop/releases/tag/v1.18.0

installする

# setup

### 1. get device udid

android端末の設定で、"開発者向けオプション" ->  "USBデバッグ" を onにする
android端末をUSB接続する

以下コマンド

```
adb devices
```

すると、接続しているandroid端末のudidが取得できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/0d9f0acf-705d-7765-864e-0c65d91b46ad.png)

### 2. set app apk

対象androidにapp (apk) をinstallする
apkをwindowsのlocalに配置する
今回、My Documentに配置した

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/f5d1473a-7762-603b-71f1-c337f5a33b33.png)

### 3. start appium

appiumをdefaultで起動する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/a515cbdf-9af6-514d-d5aa-6a078a829272.png)

Inspectorを起動する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/4e3cda88-6446-8178-60dc-c5ce0acb916e.png)

inspectorにて、JSON Representationにcapabilitiesを記載する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/a8f8ed70-24f1-4ec7-572d-ea0bdabf5960.png)

capabilities は環境、アプリによってことなります

とりあえず、最低限の設定項目は以下になります

| Name| Value | 
|:-----------|:------------|
| platformName| Android        | 
| deviceName| Androidの端末名 (ex. Pixel)| 
| udid| 端末ID 先ほどadbで取得した値| 
| platformVersion| Android version (ex. 11)       | 
| app| windowsに配置したapkのpath ※1| 
| appPackage| appの名前 ※2| 
| autoGrantPermissions| true : 承認系のpopupをskipできる| 

※1 app
windowsのappのpathの取り方がよくわからなかった。
C:\xxxx ではだめだった

以下のようにMy Documentsに置いた場合
C:\Users\xxxxx\Documents\xxxx.apk
appは以下のようになる
/Users/xxxxx/Documents/xxxx.apk



※2 appPackageの取り方

androidにInstallされているappPackage listが取得できる
ここから対象の探す

```
adb shell pm list packages
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/d8403e77-e875-cd74-9fc3-4d2fb3f8854c.png)

最終的に、以下のように設定する
そして、セッションを開始する　をクリック　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/2af4d36f-98e3-6de7-bd6c-422419e7bd78.png)


すると、windows上でappのUIが表示される。
そして、各パーツをクリックすると、xpathを取得できる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/14f312cb-0900-4c3b-911a-24c793923954.png)