LoginSignup
1
5

[Set up] appium 2.x in Mac for iOS APP (Ventura)

Last updated at Posted at 2023-06-01

Mac

今回は、Apple M1 chip のmacを用いて
Ventura 13.3.1 にて構築した

image.png

Java

Javaは最新の20を用いた
M1なので、ARM64 DMG Installerを使用する

次に、JAVAのPATH周りを設定する
macのdefault shellがzshなので、.zshrcを編集する

vi .zshrc 


---
export JAVA_HOME=JAVA_HOME=$(/usr/libexec/java_home)
---
% java -version

java version "20.0.1" 2023-04-18
Java(TM) SE Runtime Environment (build 20.0.1+9-29)
Java HotSpot(TM) 64-Bit Server VM (build 20.0.1+9-29, mixed mode, sharing)

Android Studio

Androidのテストを行う場合、必須
今回、 Android Studio Flamingo | 2022.2.1 Patch 2 をインストールした。
基本的にデフォルトのインストールで問題ない。(開発ツール含む)

インストール後、PATHの設定が必要となる。
PATHの情報は、Tools -> SDK Manager をopenし、SDK Locationを取得する。

これより、 ANDROID_HOME の場所を設定する

image.png

vi .zshrc 


---
export ANDROID_HOME=/Users/USERNAME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
---

Xcode

iOSのテストをするときは必須
XcodeはVersion 14.3 (14E222b)を利用する

image.png

command lineで利用可能にする

xcode-select --install

対象のXcodeを指定する(基本的に、デフォルトで良いが、複数versionをinstallしている場合、
明示的に指定する

sudo xcode-select --switch /Applications/Xcode.app

brew

package管理のツールをインストールする。

以下コマンドでinstallする

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

brewのPATHを設定する
zshを使用しているので、以下コマンドで設定ファイルに書きこみ

echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> ~/.zshrc 

最後にversionを確認する

% brew -v

Homebrew 4.0.19

npm

javascript系package管理ツールをinstallする
appiumのinstall時に必要である。
nodebrew 最新版をインストールする

brew install nodebrew

/opt/homebrew/opt/nodebrew/bin/nodebrew setup_dirs

nodebrew install-binary latest

npmのversionを指定する
今回、v20.5.1であったので、このversionを指定する

nodebrew use v20.5.1

すると、currentのpathが設定される

ls -l ~/.nodebrew 

lrwxr-xr-x 1 ospdqa staff 36 Aug 17 08:56 current -> /Users/ospdqa/.nodebrew/node/v20.5.1
drwxr-xr-x 3 ospdqa staff 96 Aug 17 08:52 default
drwxr-xr-x 2 ospdqa staff 64 Aug 17 08:52 iojs
drwxr-xr-x 3 ospdqa staff 96 Aug 17 08:52 node
drwxr-xr-x 3 ospdqa staff 96 Aug 17 08:52 src

pathを設定する

.zshrc

export PATH=$HOME/.nodebrew/current/bin:$PATH

最後に初期化をする

npm init

reference###
versionを指定する場合、以下のように可能versionをlistupして対象のverionをinstallすることも可能

% nodebrew ls-remote

v19.0.0   v19.0.1   v19.1.0   v19.2.0   v19.3.0   v19.4.0   v19.5.0   v19.6.0
v19.6.1   v19.7.0   v19.8.0   v19.8.1   v19.9.0   
v20.0.0   v20.1.0   v20.2.0   
nodebrew install v20.2.0 
nodebrew use v20.2.0 

Carthage

iOS library 管理ツールをinstallする

brew install carthage

Appium

今回は将来性を考えて、appium2を使用する

尚、今現在appium desktopに関してはsupportが終了していた。
https://github.com/appium/appium-desktop/releases

以下の方法でインストールする

npm i --location=global appium

appiumの設定確認をするdoctorをインストール

npm install appium-doctor -g

appium inspectorは以下よりdmgをdownloadしてインストールする

なお、起動すると以下のエラーで起動しない。
image.png

それを回避するために、以下コマンドを実行する

xattr -cr "/Applications/Appium Inspector.app"

optionl library

appium-doctorを実行し、環境構築が十分かを確認する。
最低限necessaryに関する設定は完了させる。
optionalに関して、一部構築が完了していないものが表示される。
これは、必要に応じてインストールする必要がある。

ここでは、optionalのインストールに関して記述する

appium-doctor

image.png

opencv4nodejs

opencvをinstallする

brew install opencv@4

brew link --force opencv@4

次に環境設定をする

.zshrc

export OPENCV4NODEJS_DISABLE_AUTOBUILD=1
export OPENCV_HOME=/opt/homebrew/Cellar/opencv/4.7.0_4/
export OPENCV_LIB_DIR=${OPENCV_HOME}/lib
export OPENCV_BIN_DIR=${OPENCV_HOME}/bin
export OPENCV_INCLUDE_DIR=${OPENCV_HOME}/include/opencv4

尚、OPENCV_HOMEはインストールされたversionのpathを設定する

設定後、以下を実行し、opencv4nodejsをインストールする

npm install -g opencv4nodejs  

mjpeg-consumer

npm install -g mjpeg-consumer

set-simulator-location

brew install lyft/formulae/set-simulator-location

idb

install idb companion

brew tap facebook/fb
brew install idb-companion

install idb-client

pip3.11 install fb-idb

applesimutils

brew tap wix/brew
brew install applesimutils

ios-deploy

brew install ios-deploy

bundletool.jar

以下より、bundletool.jar最新版をdownloadする

bundletool.jarをandroid sdk配下に設置する

mkdir ~/Library/Android/sdk/bundle-tool
cp ~/Downloads/bundletool-all-1.15.1.jar ~/Library/Android/sdk/bundle-tool/bundletool.jar
chmod +x ~/Library/Android/sdk/bundle-tool/bundletool.jar

最後に、bundletool.jarのpathを指定する

.zshrc

export PATH=${PATH}:${ANDROID_HOME}/bundle-tool

Appium Driver

uiautomator2

AndroidのためのDriver

appium driver install uiautomator2

chrome driver (waiting for bug fix)

appium driver install chromium

今現在、installで問題が起きてみたいだ・・・
https://github.com/appium/appium/issues/18006

xcuitest

iOSのためのDriver

appium driver install xcuitest

Device Setting

iPhoneでテストできる設定が必要

Enabling Developer Mode on a device

Enabling Web Inspector

xcuitest setting

iOSのテストを行うとき、xcuitestを使用する。
defaultだと、xbuildが失敗する

xbuildを実行した時のエラーメッセージ。(appium inspectorで接続するときも、同様のエラーを出す)

Testing failed:
	Signing for "WebDriverAgentRunner" requires a development team. Select a development team in the Signing & Capabilities editor.
	Testing cancelled because the build failed.

これは、signingが正しく設定されてないため、発生する。

まず、appium2のxcuitestのsourceの場所を確認する(1.xとはpathが異なる)
以下の場所にあると思う。

cd ~/.appium/node_modules/appium-xcuitest-driver     

次に、そこにあるWebDriverAgent.xcodeprojをxcodeで開く

image.png

buildを実行すると、警告画面になる
主に2点
-WebDriverAgent
-WebDriverAgentRunner

以下のように、Sigin Errorがでる。
image.png

Signing & Capabilities にて、Add Accountを選択する
このとき、apple developer accountでログインし、profileをダウンロード設定する。

image.png

このエラー対応後、command lineでxbuild でテストする

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=$UDID' test

※$UDID は接続するiPhoneのUDID

成功すると、iphoneで以下のように、「Automation Running」のmessageが表示される

image.png

起動確認

appiumを実行する

appium

image.png

portなどoptionを指定したい場合、helpを参照

% appium -help
usage: appium server [-h] [--address ADDRESS] [--allow-cors] [--allow-insecure ALLOW_INSECURE] [--base-path BASE_PATH] [--callback-address CALLBACK_ADDRESS]
                     [--callback-port CALLBACK_PORT] [--debug-log-spacing] [--default-capabilities DEFAULT_CAPABILITIES] [--deny-insecure DENY_INSECURE]
                     [--keep-alive-timeout KEEP_ALIVE_TIMEOUT] [--local-timezone] [--log LOG] [--log-filters LOG_FILTERS] [--log-level LOG_LEVEL]
                     [--log-no-colors] [--log-timestamp] [--long-stacktrace] [--no-perms-check] [--nodeconfig NODECONFIG] [--port PORT] [--relaxed-security]
                     [--session-override] [--strict-caps] [--tmp TMP] [--trace-dir TRACE_DIR] [--use-drivers USE_DRIVERS] [--use-plugins USE_PLUGINS]
                     [--webhook WEBHOOK] [--driver-xcuitest-webdriveragent-port WEBDRIVERAGENT_PORT] [--shell] [--show-build-info] [--show-config]
                     [--config CONFIGFILE]

inspectorで起動確認

Case1 Android APP

image.png

capabilitiesの例は以下の通り

Parameter note
platformName android
appium:deviceName device name
appium:udid device UDID
appium:platformVersion android version
appium:appPackage app package name
appium:autoGrantPermissions true
appium:automationName UIAutomator2
appium:app apk file path

Case2 iOS APP

Parameter note
platformName iOS
appium:deviceName device name
appium:udid device UDID
appium:platformVersion iOS version
appium:appPackage app package name
appium:autoGrantPermissions true
appium:automationName XCUITest
appium:app ipa file path

Case3 iOS Safari

Parameter note
platformName iOS
appium:deviceName device name
appium:udid device UDID
appium:platformVersion iOS version
appium:autoGrantPermissions true
appium:automationName XCUITest
browserName Safari

うまく設定ができていれば、以下のようにdeviceの情報を取得できる

image.png

1
5
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
1
5