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_PROVIDERiOS モードを有効にするには 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.xcodeproj

Xcode にて:

  1. WebDriverAgentRunner ターゲットを選択
  2. 「サインと機能」に移動
  3. あなたのチームを選択(Apple Developer アカウントが必要。無料トライアルでも可)
  4. 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/WebKitSafariのみ
タブ対応1タブのみ
PDFエクスポート対応非対応
画面録画対応非対応
スワイプジェスチャネイティブ対応なしネイティブ対応あり

トラブルシューティング

Appium が見つからない

# Appium がグローバルにインストールされているか確認
npm install -g appium
appium driver install xcuitest

# インストールの確認
appium --version

シミュレーターが利用できない

Xcode を開き、設定 → プラットフォームから iOS シミュレーター ランタイムをダウンロードしてください。

シミュレーターが起動しない

手動で Xcode またはシミュレーター アプリからシミュレーターを起動して、正常に動作することを確認した後、再び agent-browser を試してください。