iOS シミュレーター
本格的なモバイルウェブテストを行うために、iOS シミュレーター上で実際の Mobile Safari を制御します。ネイティブ自動化には Appium と XCUITest が使用されます。
要件
- Xcode がインストールされた macOS
- iOS シミュレーター ランタイム(Xcode からダウンロード)
- Appium と XCUITest ドライバー
設定
# Appium をグローバルにインストール
npm install -g appium
# iOS 用の XCUITest ドライバーをインストール
appium driver install xcuitest利用可能なデバイスの一覧表示
システム上に存在するすべての iOS シミュレーターを確認します:
agent-browser device list
# 出力例:
# 利用可能な iOS シミュレーター:
#
# ○ iPhone 16 Pro (iOS 18.0)
# F21EEC0D-7618-419F-811B-33AF27A8B2FD
# ○ iPhone 16 Pro Max (iOS 18.0)
# 50402807-C9B8-4D37-9F13-2E00E782C744
# ○ iPad Pro 13-inch (M4) (iOS 18.0)
# 3A6C6436-B909-4593-866D-91D1062BB070
# ...基本的な使い方
-p ios フラグを使用して iOS モードを有効化します。ワークフローはデスクトップ版と同一です:
# iPhone 16 Pro 上で Safari を起動
agent-browser -p ios --device "iPhone 16 Pro" open https://example.com
# リファレンスを使用したスナップショット取得(デスクトップと同じ)
agent-browser -p ios snapshot -i
# リファレンスを使用した操作
agent-browser -p ios tap @e1
agent-browser -p ios fill @e2 "テキスト"
# スクリーンショットの撮影
agent-browser -p ios screenshot mobile.png
# セッションの終了(シミュレーターを停止)
agent-browser -p ios closeモバイル専用コマンド
# サイドスワイプジェスチャ
agent-browser -p ios swipe up
agent-browser -p ios swipe down
agent-browser -p ios swipe left
agent-browser -p ios swipe right
# 距離指定のスワイプ(ピクセル単位)
agent-browser -p ios swipe up 500
# タップ(click のエイリアス。タッチ操作に分かりやすい表現)
agent-browser -p ios tap @e1環境変数
環境変数を使って iOS モードを設定します:
export AGENT_BROWSER_PROVIDER=ios
export AGENT_BROWSER_IOS_DEVICE="iPhone 16 Pro"
# 以降のすべてのコマンドで iOS モードが使用される
agent-browser open https://example.com
agent-browser snapshot -i
agent-browser tap @e1| 変数 | 説明 |
|---|---|
AGENT_BROWSER_PROVIDER | iOS モードを有効にするには ios に設定 |
AGENT_BROWSER_IOS_DEVICE | デバイス名(例: "iPhone 16 Pro") |
AGENT_BROWSER_IOS_UDID | デバイスの UDID(デバイス名の代わりに使用可能) |
対応デバイス
Xcode で利用可能なすべての iOS シミュレーターがサポートされています。以下が含まれます:
- すべての iPhone モデル(iPhone 15、16、17、SE など)
- すべての iPad モデル(iPad Pro、iPad Air、iPad mini など)
- 複数の iOS バージョン(17.x、18.x など)
実機デバイスも、USB 接続によりサポートされています(下記参照)。
実機デバイスのサポート
Appium は、USB で接続された実際の iOS デバイス上の Safari を制御できます。これには追加の初期設定が必要です。
1. デバイスの UDID を取得
# 接続済みデバイスの一覧表示
xcrun xctrace list devices
# またはシステムプロファイラによる確認
system_profiler SPUSBDataType | grep -A 5 "iPhone\|iPad"2. WebDriverAgent の署名(一度限り)
実機デバイスで実行するためには、WebDriverAgent にあなたの Apple Developer 証明書で署名する必要があります。
# WebDriverAgent の Xcode プロジェクトを開く
cd ~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent
open WebDriverAgent.xcodeprojXcode にて:
WebDriverAgentRunnerターゲットを選択- 「サインと機能」に移動
- あなたのチームを選択(Apple Developer アカウントが必要。無料トライアルでも可)
- Xcode に自動的にサイン管理を任せる
3. agent-browser での利用
# USB でデバイスを接続後、UDID を使用
agent-browser -p ios --device "<DEVICE_UDID>" open https://example.com
# デバイス名が一意であれば、それも使用可能
agent-browser -p ios --device "John's iPhone" open https://example.com実機デバイスに関する注意事項
- 最初の実行時に WebDriverAgent がデバイスにインストールされます(デバイス上で信頼プロンプトが表示される場合があります)
- デバイスはロック解除され、USB で接続されている必要があります
- シミュレーターに比べて初期接続がやや遅い
- 実際の Safari でのパフォーマンスと動作に対するテストが可能
- 最初のインストール時は、[設定] → [一般] → [VPN およびデバイス管理] に移動し、開発者証明書を信頼してください
パフォーマンスに関する注意点
- 初回起動時: シミュレーターの起動と Appium の開始に 30~60 秒かかります
- その後のコマンド: すぐに実行可能(シミュレーターは常駐)
- close コマンド: シミュレーターと Appium サーバーを停止します
デスクトップとの違い
| 機能 | デスクトップ | iOS |
|---|---|---|
| ブラウザ | Chromium/Firefox/WebKit | Safariのみ |
| タブ | 対応 | 1タブのみ |
| PDFエクスポート | 対応 | 非対応 |
| 画面録画 | 対応 | 非対応 |
| スワイプジェスチャ | ネイティブ対応なし | ネイティブ対応あり |
トラブルシューティング
Appium が見つからない
# Appium がグローバルにインストールされているか確認
npm install -g appium
appium driver install xcuitest
# インストールの確認
appium --versionシミュレーターが利用できない
Xcode を開き、設定 → プラットフォームから iOS シミュレーター ランタイムをダウンロードしてください。
シミュレーターが起動しない
手動で Xcode またはシミュレーター アプリからシミュレーターを起動して、正常に動作することを確認した後、再び agent-browser を試してください。