この記事はUiPathブログ発信チャレンジ2023サマーの8日目の記事です。
はじめに
UiPathのモバイルオートメーションはネイティブアプリやWebアプリのテスト自動化はもちろん、RPAで培われた豊富なアクティビティを利用してモバイルを使った作業自動化も出来るってとこもポイントです。UiPath社の顧客事例で「モバイルアプリのテストができるTest Suiteが、唯一の選択肢に」ってところが、個人的には、すごく印象的です。
ただ、ローカルiOSデバイスと接続する方法についてはUiPath公式ドキュメントの情報のままでは出来なかったり、グローバルのエンジニアがYoutubeで公開しているモバイルテストのウェビナーもiOSについては、クラウドサービスのSauce LabsやBrowserStackの利用しか見かけなかったので、一部、調べまくったw
本ブログはローカルiOSデバイスの接続を自力で突破した時のノウハウをガイド風(非公式)にして見ました。
尚、公式ドキュメントは、こちらです。
必要な機材
事前に調達する機材をまとめてみました。
- Mac
- Windows PC
- USBケーブル(MacとローカルiOSデバイス間の通信で必要)
- iOSデバイス(iPhoneでもiPadでも)
- Wi-Fi環境
接続図
本ブログで利用した環境
MacやiOSデバイスの機種や各ソフトウェアバージョンにより、ブログ記載と異なってくる部分もあるので、前提として記載しておきます。
- Mac M1チップ搭載MacBook Air
- Mac iOS v13.4.1
- Xcode v14.3.1
- Appium 2.0
- iPhone7(iOS 15.7.6) ※iPhoneSE(iOS 16.5.1)も実証済み。
- UiPath Studio v2023.4.1
- UiPath.Mobile.Automation.Activities v2022.10.5
1. Macにソフトウェアをインストールする
(1) Xcodeをインストールする。
(2) ターミナルを開く。
(3) 次のコマンドを実行して Homebrew をインストールする。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
パスワードを求められたらMacのログインパスワードを入力する。
export PATH="$PATH:/opt/homebrew/bin/"
(4) 次のコマンドを実行して Node.js をインストールする。
brew install node
(5) Appium をインストールする。
npm install -g appium@next
appium driver install xcuitest
2.MacのXcodeでWebDriverAgentを構築し、ローカルiOSデバイスにWebDriverAgentをインストール
(1) ローカルiOSデバイスをMacに接続する。
警告のポップアップが表示されたらデバイスのロックを解除して、コンピューターがデバイスにアクセスできるようにする。
ローカルiOSデバイスがiOS16以降の場合は、iOSデバイス側で[設定]>[プライバシーとセキュリティ]>[開発者モード]で有効にしておくこと。
(2) ターミナルを開く。
(3) WebDriverAgent.xcodeprojを探す。
echo "$(dirname "$(find "$HOME/.appium" -name WebDriverAgent.xcodeproj)")"
出力されるパスの例
/Users/[XXXX]/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent
(4) 出力されたパスへFinderで移動する。
(5) WebDriverAgent.xcodeprojを開く。Xcodeが起動する。
(6) [WebDriverAgent]を選択し、[Targets]セクションの[WebDriverAgentRunner]を選択する。[Signing & Capabilities] タブに切り替える。
(7) [Automatically manage signing] を選択し、[Team] からユーザー アカウントを選択する。[Bundle Identifier] を一意の値に変更する。例)com.UiPathgmail.WebDriverAgentRunner
(8) WebDriverAgentのナビゲーションバーで [WebDriverAgentRunner]を選択する。
(9) XCodeのメニューバーで[Product]を選択し、[Test] をクリックして、接続したiOSデバイス側へWebDriverAgentのインストールが開始される。
キーチェーンパスワードの入力が求められた場合はMacのログインパスワードを入力する。繰り返し求められることもある。
(10) MacのターミナルでXcodeのパスを確認する。
xcode-select -print-path
(11) パスが下記の様なパスでない場合は下記を実行する。
sudo xcode-select -switch /Applications/Xcode.app
3.MacでWi-FiネットワークのIP アドレスを取得
(1) Macで、アップルメニュー>「システム設定」を選択し、サイドバーで「ネットワーク」をクリックします。右側でWi-Fiの接続済み表示の[詳細...]をクリックする。
(2) Macが接続されているWi-FiネットワークのIP アドレスを後で使うのでコピーして保存しておく。
コピーしたIPアドレスはUiPath StudioのMDMで接続情報設定値として使用する。Appium URLの形式はhttp://<IPアドレス>:8001です。(8001はAppiumを開始するポート番号です)
Wi-Fi再接続時にIPアドレスが変わる可能性があるので念のため、Mac起動の都度確認して保存する。
4.XcodeからローカルiOSデバイスのUDIDを取得
(1) Xcodeのメニューで[Window] > [Devices and Simulators]に移動する。
(2) [Devices]タブを選択し、接続したローカルiOSデバイスを選択する。
(3) Identifier をコピーする。これがデバイスのUDIDとなる。後でUiPath Studioのモバイルデバイスマネージャにて接続情報設定値として使用する。
(4) Appium を起動する。起動の都度、これを実行する。
export PATH="$PATH:/opt/homebrew/bin/"
appium --port 8001 --default-capabilities "{\"appium:systemPort\":9001}"
※\はバックスラッシュで入力
5.UiPath StudioのモバイルデバイスマネージャでローカルiOSデバイスを設定
(1) UiPath Studioを立ち上げ、[テンプレート]で[モバイルテストプロジェクト]を選択しプロジェクトを作成する。
(3) 左側の[デバイス]タブを選択し、デバイス追加アイコンをクリックする。
(4) 接続するデバイス情報を設定する。
- 名前 - [デバイス] タブでデバイスを識別するための名前を入力する。
- Appium URL - 前述の手順でコピーした Appium URL を http://<IPアドレス>:8001 という形式で入力する。
- プラットフォーム - フィールドをクリックして、ドロップダウンから [iOS] を選択する。
- デバイス名 - デバイスの名前を入力する。
- 希望する追加機能 - 次の機能を追加する。
名前 | 値 (Value) |
---|---|
automationName | xcuitest |
udid | 前述の手順でコピーしたローカルiOSデバイスのIdentifier |
6.ローカルiOSデバイスとの接続を実行
7.接続時に指定したWebアプリケーションを立ち上げる
(1) Safariで自動化する場合はiOSデバイスの[設定]>[Safari]>[詳細]のWebインスペクタを有効に設定する。
(2) モバイルデバイスマネージャの左側の[アプリケーション]タブを選択し、アプリケーション追加アイコンをクリックする。
8.ワークフローからデバイス接続、Webアプリケーションを立ち上げる
(1) [モバイルデバイスの接続]アクティビティを挿入する。
(2) [接続の詳細を選択]をクリックし、接続の詳細情報を設定、保存する。
9.iOSシュミレータと接続する場合
(1) 接続したいiOSシミュレータを選択し、デバイスを切り替えます。
(2) Xcodeのメニューバーで[Product]を選択し、[Test] をクリックするとMacでiOSシミュレータが起動する。
(3) UiPath StudioのモバイルデバイスマネージャでiOSシュミレータのデバイスを追加し、接続情報を設定する。
(4) モバイルデバイスマネージャ上で接続を実行するとMacのiOSシュミレータと接続される。
10.モバイルオートメーション開発へ
UiPathと接続すると下記の様なイメージでモバイルオートメーションをローコードで構築できます。デモとして、さくっと見せたかったので、UiPathモバイルデバイスマネージャのレコーディング機能を使ってます。
おわりに
Androidデバイスとの接続は、Macも使わないので、もう少し簡単です。
かつ、Androidの仮想デバイスとの接続だけなら、ホワイトペーパーTest Suite のはじめ方も、まだ役に立ちます。と言うことで、本ブログでは難易度が比較的高くなるローカルiOSデバイス接続をガイドにしてみました。