Appium - iOS 환경 셋팅

정태경·2022년 6월 12일
2
post-thumbnail

안드로이드 시뮬레이터, 실 기기에서 Appium을 구동하는 것은 어려운 일이 아니다.
그러나 iOS에서는 몇 가지 제약 조건도 있고 환경 세팅하는 절차도 꽤나 번거롭다. 이번 게시글에서는 iOS Appium 환경 세팅하는 과정에 대해 정리해 볼 예정이다.

준비물 및 사전 조건

Appium Server 실행 조건이 충족했다는 가정하에 작성된 글이기 때문에 Appium Server 환경 세팅이 완료되어 있어야 한다.

준비물

  • Mac OS (맥북 또는 아이맥)
  • iPhone, iPad
  • 애플 개발자 계정
  • 테스트용 앱 (debug 빌드)

환경 셋팅에 필요한 정보 식별

준비물이 모두 준비되었다면 이를 바탕으로 iOS 환경 세팅에 필요한 정보들을 준비해야 한다. 하나하나 준비해 보도록 하자.

Team ID 식별
우선 애플 개발자 계정으로 https://developer.apple.com/account의 Membership 탭으로 이동하여 Team ID를 기록해두자.
추후 Capability 세팅 시 필요한 정보이다.

실물 테스트 기기의 UDID 식별
실물 테스트 기기(iPhone, iPad)를 Mac OS에 연결하면 Finder에서 기기의 UDID를 식별할 수 있다. UDID도 추후 Capability 세팅 시 필요한 정보이므로 잘 기록해두자.

시뮬레이터의 UDID 식별
만약 실물 기기가 아닌 시뮬레이터를 사용하고 있다면 터미널에 xcrun simctl list | grep Booted를 입력하여 실행 중인 시뮬레이터의 UDID를 식별할 수 있다.

테스트 앱의 Bundle ID 식별
테스트 앱의 Bundle identifier도 추후 Capability 세팅 시 필요한 정보이므로 잘 기록해두자.

  1. 테스트용 앱의 확장자를 ipa → zip으로 변경하여 압축을 푼다.
  2. 압축 푼 파일을 우 클릭하여 패키지 내용 보기를 클릭한다.
  3. info.plist 파일을 열어보면 Bundle identifier" 정보를 식별할 수 있다.

WebDriverAgent(WDA) 셋팅

WebDriverAgent는 iOS 기기를 조작할 수 있게 해주는 python library이다.
Facebook에서 테스트를 위해 만든 라이브러리를 오픈소스로 공개했다고 한다. 아무튼 Appium도 이 WebDriverAgent를 통해 iOS 기기를 제어하기 때문에 테스트 기기에 WDA를 설치해 주어야 한다.

설치하는 방법은 크게 터미널에서 git 커맨드를 이용하여 설치하는 방법과 Xcode를 통해 설치하는 방법이 있는데 나는 Xcode를 통해 설치하는 방법에 대해 소개할 예정이다.

Xcode에서 WDA 프로젝트 Clone

  1. Xcode를 실행한 후 Clone an existing project를 클릭한다.

  2. 상단의 URL 인풋 필드에 https://github.com/appium/WebDriverAgent.git 입력 후 Clone을 클릭한다.


Xcode에 개발자 계정 등록

Xcode → Preferences → Accounts 메뉴에서 준비해두었던 애플 개발자 계정으로 로그인한다.

Xcode에서 WebDriverAgent Signing & Build Settings 설정

WDA 프로젝트로 Clone 했고, 애플 개발자 계정도 연결 완료했다면 남은 작업은 Signing & Build Setting을 바꿔주는 것만 남았다.
수정해야할 부분이 몇 가지 존재하니 아래 내용을 참고하여 모두 설정해주도록 하자.

1. WebDriverAgent.Lib → Signing & Capabilites → Team / Bundle identifier 변경
Team에는 연결된 애플 계정을 선택해주고, Bundle identifier는 임의의 값을 입력해준다.

Bundle identifier는 그 누구와도 중복되지 않는 고유의 값으로 설정해야 한다.
e.g) com.taekyeongjungtest.WebDriverAgentLib

2. WebDriverAgent.Lib → Build Settings → Product Bundle identifier 변경
Packaging → Product Bundle identifier를 위에서 입력했던 Bundle identifier로 변경해준다.

3. WebDriverAgentRunner → Signing & Capabilites → Team 변경
Team에는 연결된 애플 계정을 선택해 준다. 하단의 Status를 보면 에러가 보이는데 이 단계에서는 무시해도 된다. (다음 단계에서 자연스레 해결됨)

4. WebDriverAgentRunner → Build Settings → Product Bundle identifier 변경
Packaging → Product Bundle identifier를 위에서 입력했던 Bundle identifier로 변경해 준다.
그리고 다시 Signing & Capabilites로 돌아와보면 하단의 에러가 해결된 것을 확인할 수 있다.


WebDriverAgentRunner 빌드하고 인증서 등록

WebDriverAgentRunner 빌드하기
위 작업까지 모두 완료되었다면 Xcode 상단에서 WebDriverAgentRunner 및 Mac OS에 연결된 테스트 기기(빌드 할 기기)를 선택한 뒤 빌드 해준다.
처음 빌드 하는 것이라면 키 체인 등록 등 몇 가지 시스템 팝업이 출력될 텐데 절차에 따라 수행해 주면 된다. Xcode 에서 Build Succeeded라고 나온다면 성공.

인증서 등록
빌드가 성공했다면 Xcode → Product → Test를 눌러준다.


그럼 테스트 빌드가 실행되는데 아래와 같이 실행에 실패했다는 에러가 발생한다.
WebDriverAgentRunner는 App Store를 통해서 배포된 버전이 아니기 때문에 발생하는 에러인데, 테스트 기기에서 신뢰할 수 있는 인증서 등록을 해주어야 실행할 수 있다.


테스트 기기에서 설정 → 일반 → VPN 및 기기 관리 → 개발자 앱에서 아래 영역을 터치하면 인증서를 등록할 수 있다.
인증서 등록 후 Xcode → Product → Test를 눌러보면 WDA가 실행되는 것을 확인할 수 있다.


Appium Inspector 실행

이제 Appium 실행을 위한 절차는 모두 완료되었다. Appium Inspector를 실행하여 잘 동작하는지 확인해보자.
실물 기기와 시뮬레이터에서 필요로하는 Capability가 조금 상이하다. 아래 내용을 참고하여 값을 입력해준 뒤 실행해보자.

실물 기기


{
  "platformName": "ios",
  "appium:deviceName": "iPhoneX",
  "appium:platformVersion": "15.2.1", 
  "appium:automationName": "xcuitest",
  "appium:udid": "{UDID}",
  "appium:bundleId": "{실행할 앱의 Bundle ID}",
  "appium:xcodeOrgId": "{애플 개발자 계정에서 식별해둔 Team ID}",
  "appium:xcodeSigningId": "iPhone Developer"
}

시뮬레이터

{
  "platformName": "ios",
  "appium:automationName": "xcuitest",
  "appium:deviceName": "simulator",
  "appium:platformVersion": "14.1",
  "appium:udid": "{UDID}",
  "appium:bundleId": "{실행할 앱의 Bundle ID}"
}

실물 기기, 시뮬레이터 모두 잘 실행된다.

profile
現 두나무 업비트 QA 엔지니어, 前 마이리얼트립 TQA 엔지니어

1개의 댓글

comment-user-thumbnail
2022년 7월 4일

WebDriverAgent의 경우 기기가 끊어졌다가 다시 붙을 경우 재 인식을 해줘야하는데 어떻게 진행을 하나요?

답글 달기