2020年5月26日火曜日

Appium 入門1 ( emulatorで Hello World! ) 

はじめに
Appiumをwindows環境で構築してみようと思いました。androidの自動化が目的です。
参考にした情報はこちらです。

公式サイト

http://appium.io/docs/en/about-appium/getting-started/?lang=en

書籍

※こちらはたまに眺める程度で使用。
環境
環境はこちらです。
Windows 10
Android 8 (emulator)
appium 1.15.1

インストール

1.appiumのインストール

インストール方法が2通りあって、npmを使う方法と、デスクトップアプリで入れる方法。
npmがわからないので、デスクトップアプリを入れることにしました。
上記サイトのrelease pageからダウンロードをしました。



いろいろなバージョンがあるのですがlatest release を書かれたものをダウンロードしました。

2.ドライバーのインストール

自動化したい端末に合わせてドライバというものをインストールする必要がるようです。
手元にあるAndroidでためしたかったので、Androidのドライバをインストールすることにしました。Androidのドライバには2種類あって、EspressoとUIAutomatetor2があります。
flagshipはUIAutomator2の方ということなので、こっちを入れることにしました。

http://appium.io/docs/en/about-appium/getting-started/?lang=en


ドライバを入れるために下記のモジュールをインストールする必要があるため、入れました。こちらのページの「Basic Setup」の記事に従って入れていきました。

(準備1)Node.js (npm)

こちらからダウンロードしてインストールしました。
https://nodejs.org/en/download/
※npmはNode.jsをインストールすると入ります。
※npmがよくわからないからappiumのデスクトップ版をいれたのですが、ドライバを入れるために結局インストールすることになりました。

(準備2)JDK

JDKはこちらのサイトからダウンロードしました。
https://www.oracle.com/java/technologies/javase-downloads.html
※最新ものを入れました。 最新でよいのかはちょっと不安です。
※この記事でやっていることだけであれば、最新版でもよいのですが、動かないtoolとかもあるのでJDK8のほうが良いかもしれません。
JDK8はoracleのサイトでアカウントを登録しないとダウンロードできないので、ちょっと手間でした。


(準備3)環境変数JAVA_HOMEの設定

システム環境変数にJAVA_HOMEを設定し、JDKのパスを設定する。
「C:\Program Files\Java\jdk1.8.0_251」を設定しました。 

※システムのプロパティ - 詳細設定 - 環境変数
環境変数のダイアログのシステム環境変数(下の方)の新規ボタンを押す。
変数名 : JAVA_HOME
変数値 : C:\Program Files\Java\jdk1.8.0_251 
を設定して、OKで閉じる。 変数値のほうは環境に応じて変更してください。

(準備4)環境変数PATHの設定

システム環境変数のPathに、JDKのbinパスを追加する。
%JAVA_HOME%\bin 

※システムのプロパティ - 詳細設定 - 環境変数
環境変数のダイアログのシステム環境変数で、Pathを選択して、編集ボタンを押し、
環境変数名の編集ダイアログで新規ボタンを押す。
%JAVA_HOME%\bin を追加する。

(準備5)Android Studio のインストール

もともといれてあったので、新しくインストールはしませんでした。
入っていたバージョンは3.6.3です。

(準備6)Android SDK toolsのインストール

Android Studio - Tools - SDK Manager - SDK toolsシート
Hide Obsolete Packagesのチェックを外す
Android SDK Tools が表示されるので、チェックしてapplyボタンを押下

(準備7)環境変数ANDROID_HOMEの設定

システム環境変数にANDROID_HOMEを設定し、android SDKのパスを設定する。
sdkのパスはAndroid Studioを起動して、Toolsメニュー - SDKマネージャー を開いて、 Android SDK Locationから確認しました。

※ついでにシステム環境変数のPathに%ANDROID_HOME%\platform-toolsを追加しておくと、のちのち便利です。

(ドライバインストール)

下記のコマンドをコマンドプロンプトで実行
npm install appium-uiautomator2-driver

(appium-doctorでチェック)

コマンドプロンプトで「npm install -g appium-doctor」を実行し、appium-doctorをインストール
「appium-doctor --android」を実行し、状況をチェック
ここまでで必須のものがOKとなっていることを確認できました。
デモアプリでHello World!

1.デモアプリの準備

公式サイトからダウンロードする。
「・・・this test Apk・・・」というリンクがあるので、そこからダウンロードしました。
これをwindows上にダウンロードします。
※よくわからず、これをemulatorでダウンロードしたりして、四苦八苦しました。

2.emulatorの起動

Android Studio - Tools - AVD Manager から emulatorを作成して、起動しておく。
サンプルに合わせてandroid 8のemulatorを作成しました。

3.サンプルコードの準備

windows上の任意の場所にindex.jsファイルを作成します。
テキストに公式サイトのサンプルをそのまま貼り付けます。
app: のところを、デモアプリをダウンロードしたパスに書き換えます。
// javascript

const wdio = require("webdriverio");
const assert = require("assert");

const opts = {
  path: '/wd/hub',
  port: 4723,
  capabilities: {
    platformName: "Android",
    platformVersion: "8",
    deviceName: "Android Emulator",
    app: "C:/XXXXXXXXXXXX/ApiDemos-debug.apk", // ←ここだけ書き換える。 
    appPackage: "io.appium.android.apis",
    appActivity: ".view.TextFields",
    automationName: "UiAutomator2"
  }
};

async function main () {
  const client = await wdio.remote(opts);

  const field = await client.$("android.widget.EditText");
  await field.setValue("Hello World!");
  const value = await field.getText();
  assert.equal(value,"Hello World!");

  await client.deleteSession();
}

main();
※内容はまだ理解していないです。

4.appium起動

スタートメニュー → Appiumをクリック
特に設定等変更せずに、「サーバーVXXXXXを起動する」 ボタンを押す。

5.実行

コマンドプロンプトを開く
index.jsがおいてあるパスにcdコマンドで移動する。
「npm init -y」コマンドを実行
「npm install webdriverio」コマンドを実行
「node index.js」コマンドを実行

※npm XXXは一回やればいいのかなぁ

6.結果

emulator側でHello World!が表示されたら、成功。
できた。