import { pageMetadata } from "@/lib/page-metadata"
export const metadata = pageMetadata("ios")
# iOS 시뮬레이터
실제 모바일 사파리를 사용하여 인증된 모바일 웹 테스트를 수행합니다. 네이티브 자동화에 Appium과 XCUITest를 사용합니다.
## 요구 사항
- 설치된 Xcode를 포함한 macOS
- iOS 시뮬레이터 런타임 (Xcode를 통해 다운로드)
- Appium 및 XCUITest 드라이버
## 설정
```bash
# Appium을 전역적으로 설치
npm install -g appium
# iOS용 XCUITest 드라이버 설치
appium driver install xcuitest사용 가능한 디바이스 목록 보기
시스템에 있는 모든 iOS 시뮬레이터를 확인합니다:
agent-browser device list
# 출력:
# 사용 가능한 iOS 시뮬레이터:
#
# ○ 아이폰 16 프로 (iOS 18.0)
# F21EEC0D-7618-419F-811B-33AF27A8B2FD
# ○ 아이폰 16 프로 맥스 (iOS 18.0)
# 50402807-C9B8-4D37-9F13-2E00E782C744
# ○ 아이패드 프로 13인치 (M4) (iOS 18.0)
# 3A6C6436-B909-4593-866D-91D1062BB070
# ...기본 사용법
-p ios 플래그를 사용하여 iOS 모드를 활성화합니다. 작업 흐름은 데스크탑과 동일합니다:
# 아이폰 16 프로에서 사파리 실행
agent-browser -p ios --device "아이폰 16 프로" 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
# 탭 (클릭의 별칭, 터치에 더 명확한 의미 제공)
agent-browser -p ios tap @e1환경 변수
환경 변수를 통해 iOS 모드를 구성합니다:
export AGENT_BROWSER_PROVIDER=ios
export AGENT_BROWSER_IOS_DEVICE="아이폰 16 프로"
# 이제 모든 명령어가 iOS를 사용합니다
agent-browser open https://example.com
agent-browser snapshot -i
agent-browser tap @e1| 변수 | 설명 |
|---|---|
AGENT_BROWSER_PROVIDER | iOS 모드를 활성화하려면 ios로 설정 |
AGENT_BROWSER_IOS_DEVICE | 디바이스 이름 (예: "아이폰 16 프로") |
AGENT_BROWSER_IOS_UDID | 디바이스 UDID (디바이스 이름 대체) |
지원되는 디바이스
Xcode에 포함된 모든 iOS 시뮬레이터가 지원되며, 다음과 같습니다:
- 모든 아이폰 모델 (아이폰 15, 16, 17, SE 등)
- 모든 아이패드 모델 (아이패드 프로, 아이패드 에어, 아이패드 미니 등)
- 여러 개의 iOS 버전 (17.x, 18.x 등)
실제 디바이스는 또한 USB 연결을 통해 지원됩니다 (아래 참조).
실제 디바이스 지원
Appium은 USB를 통해 연결된 실제 iOS 디바이스의 사파리를 제어할 수 있습니다. 이는 추가적인 한 번만의 설정이 필요합니다.
1. 디바이스의 UDID 확인
# 연결된 디바이스 목록 보기
xcrun xctrace list devices
# 또는 시스템 프로파일러를 통한 확인
system_profiler SPUSBDataType | grep -A 5 "iPhone\|iPad"2. WebDriverAgent 서명 (한 번만 수행)
실제 디바이스에서 실행하기 위해 WebDriverAgent는 애플 개발자 인증서로 서명되어야 합니다.
# WebDriverAgent Xcode 프로젝트 열기
cd ~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent
open WebDriverAgent.xcodeprojXcode에서:
WebDriverAgentRunner타겟 선택- 서명 및 기능으로 이동
- 팀 선택 (애플 개발자 계정 필요, 무료 계정도 가능)
- Xcode가 서명을 자동으로 관리하도록 설정
3. agent-browser와 함께 사용
# USB로 디바이스 연결 후, UDID 사용
agent-browser -p ios --device "<DEVICE_UDID>" open https://example.com
# 고유한 경우 디바이스 이름 사용 가능
agent-browser -p ios --device "존의 아이폰" open https://example.com실제 디바이스 참고 사항
- 첫 실행 시 디바이스에 WebDriverAgent 설치 (디바이스에서 신뢰 요청이 필요할 수 있음)
- 디바이스는 잠금 해제되어 있고, USB로 연결되어 있어야 함
- 시뮬레이터보다 초기 연결이 약간 느림
- 실제 사파리 성능 및 동작에 대한 테스트 가능
- 최초 설치 시, 설정 → 일반 → 가상 네트워크 및 장치 관리로 이동하여 개발자 인증서 신뢰
성능 참고 사항
- 첫 실행: 시뮬레이터 부팅 및 Appium 시작에 30~60초 소요
- 다음 명령어: 빠름 (시뮬레이터는 계속 실행됨)
- 종료 명령어: 시뮬레이터와 Appium 서버 종료
데스크탑과의 차이점
| 기능 | 데스크탑 | iOS |
|---|---|---|
| 브라우저 | 크롬/파이어폭스/웹킷 | 사파리만 지원 |
| 탭 | 지원됨 | 단일 탭만 지원 |
| PDF 내보내기 | 지원됨 | 지원되지 않음 |
| 화면 캡처 | 지원됨 | 지원되지 않음 |
| 스와이프 제스처 | 네이티브 아님 | 네이티브 지원 |
문제 해결
Appium을 찾을 수 없음
# Appium이 전역으로 설치되었는지 확인
npm install -g appium
appium driver install xcuitest
# 설치 확인
appium --version사용 가능한 시뮬레이터 없음
Xcode를 열고 설정 → 플랫폼에서 iOS 시뮬레이터 런타임을 다운로드하세요.
시뮬레이터 부팅 실패
직접 Xcode나 시뮬레이터 앱에서 시뮬레이터를 수동으로 부팅하여 작동하는지 확인한 후, 다시 agent-browser로 시도하세요.