Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@kitaharamikiya

Appiumを使ってみた話:[インストールまで成功したけど・・・]

More than 3 years have passed since last update.

Classi Advent Calendar 2016 - Qiita 10日目です。

Classi ネイティブアプリ担当の @kitaharamikiya です。

今回は、Appiumを使ってみた話を書きます。

1. Appiumとは

Appiumはネイティブ、 ハイブリッド型モバイルアプリのために開発された
オープンソースのテスト自動化フレームワークです

公式サイトから引用させていただきました。

selenium のMobile用に拡張したということで、Seleniumを使ったことがあれば
比較的簡単に書けるかと思います。

2. 必要になった経緯

iOSアプリ申請後リジェクトされてしまいました。。。

理由が大変お恥ずかしいのですが、
「iOSアプリ申請に使用しているアカウントでログインできないからレビューできねーよ」
的なことを言われました。

Apple様に多大なるご面倒をおかけしましたし、
審査待ちの3日間を無駄にしてしまいました。

ログイン部分は、Webviewを使用していて、そこで認証が通ればログインができるのですが、
Webviewとロジックの部分で連携ができていませんでした。。。

もちろん動作確認もしてはいますが、
Classi アプリはログインが2種類あり、もう一方のログインを試していませんでした。。。

なかなかテストに割く時間がなかったのですが、
こんな恥ずかしくてしょーもない理由でリジェクトされるのは懲り懲りなので、
テストを書くことにしました。

3. インストールしてみる

とりあえずローカルにインストールしてみます。

3-1 事前準備

3-1 Java をインストールします

3-2 Android SDKをインストールします

3-3 Xcodeをインストールします。

3-4 Homebrewをインストールします (Mac)

3-5 Node.jsをインストールします。

$ brew install node

3-2 Appium をインストールします

  • Windows

    • 公式サイトからダウンロードできるようです(未検証です:bow:)
  • Mac

    • 公式サイトからダウンロード
      • 公式サイトからダウンロードできるようです(未検証です:bow:)
    • ターミナルでの方法 (今回はこちらでやりました)
      • Appium ダウンロード
          ※ sudo は使わないとのこと(実行時、ユーザー権限まわりでエラーになるそう、、)
     $ npm install -g appium   # appium をインストール
     $ npm install -g wd       # appium clientをインストール
     $ npm install -g appium-doctor # appium 診断ツールをインストール
    
    • appium-doctor
      • 出現したエラーを解消する
        • xcode-select --install :Xcode Command Line Toolsをインストール
        • brew install carthage :carthage をインストール
        • JAVA_HOMEANDROID_HOME を.bash_profileに記載 (PATH通しているだけではだめなんですね。。)
          JAVA_HOMEが読み込まれないのは、jenv の影響でした。。
  • 起動と終了コマンド

# 起動
$ appium &
# 終了
$ killall -9 node

3-3 サンプルコードを試してみる

  1. サンプルソースをダウンロード
    $ git clone https://github.com/appium/sample-code.git APPIUM_SAMPLE

  2. cloneしたプロジェクトのルートに移動する

  3. サンプルコードのルートに移動する
    $cd sample-code/examples/node

  4. 実行
    $ node android-webview.js

5.エラーでハマる。。。

  • モジュールがない
    • npm-install-missing があるんですね。知らなかった。。。
  • mochaを入れないといけない?
    • $ npm install -g mocha
  • エミュレーターが起動していないから?
    • Dockerが起動していて、エミュレータが起動しなかった。。。(Virtual boxなんて起動してねーよと思いながら)
  • $ mocha android-simple.js
    • 別のエラーがでる
  1) android simple "before all" hook:
     Error: [init({"browserName":"","appium-version":"1.3","platformName":"Android","platformVersion":"4.4.2","deviceName":"Android Emulator","app":"http://appium.github.io/appium/assets/ApiDemos-debug.apk"})] The environment you requested was unavailable.
      at node_modules/wd/lib/webdriver.js:129:15
      at Request._callback (node_modules/wd/lib/http-utils.js:87:7)
      at Request.self.callback (node_modules/request/request.js:368:22)
      at Request.<anonymous> (node_modules/request/request.js:1219:14)
      at IncomingMessage.<anonymous> (node_modules/request/request.js:1167:12)
      at endReadableNT (_stream_readable.js:974:12)
      at _combinedTickCallback (internal/process/next_tick.js:74:11)
      at process._tickCallback (internal/process/next_tick.js:98:9)

  2) android simple "after all" hook:
     Error: [quit()] Unexpected data in simpleCallback.
      at exports.newError (node_modules/wd/lib/utils.js:139:13)
      at PromiseWebdriver.<anonymous> (node_modules/wd/lib/callbacks.js:42:12)
      at cb (node_modules/wd/lib/webdriver.js:160:22)
      at node_modules/wd/lib/webdriver.js:174:5
      at Request._callback (node_modules/wd/lib/http-utils.js:87:7)
      at Request.self.callback (node_modules/request/request.js:368:22)
      at Request.<anonymous> (node_modules/request/request.js:1219:14)
      at IncomingMessage.<anonymous> (node_modules/request/request.js:1167:12)
      at endReadableNT (_stream_readable.js:974:12)
      at _combinedTickCallback (internal/process/next_tick.js:74:11)
      at process._tickCallback (internal/process/next_tick.js:98:9)

4. 結論

  • インストールはできた。
  • サンプルコードを動かすことができなかった。。=> 原因調査中
  • しょーもないミスで、時間を潰す前にテストは書こうという話

5. TODO

  • サンプルコードは諦めて、自分でアプリとコマンドを書いて試してみる

6. 書籍

実践 Appium(Amazonリンクです)を購入して読んででいます。

2016/11/26 くらいにでたのに、FirefoxOSの事も書いてあり、ちょっと古いのかな。。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kitaharamikiya
Classi 株式会社でAndroid エンジニアなどやってます
classi
学校の先生・生徒・保護者向けのB2B2Cの学習支援Webサービス「Classi(クラッシー)」 を開発・運営している会社です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?