WebDriverAgent를 조작해서 iOS를 조작해 줄 수 있는 python library이다.
앞선 글과 다르게 library의 이름인 FacebookWDA
에 대해서 먼저 살펴보려고 한다.
나도 처음 이 이름을 보았을때 왜? Facebook
이란 이름이 붙었을지 너무 궁금 했다. 보통 library이름에 ios어쩌구
나 automation
등이 붙어야 정상일거라고 생각했고, Facebook
이란 이름 덕분에 Facebook
만 테스트 해준다는 느낌을 받았었다.
관련 유래를 살펴보니, FacebookWDA에서 WDA는 Web Driver Agent
의 약자로 iOS기기 또는 Simulator에 설치되서 agent서버 형태로 구동되는 App이고 이 app을 Facebook쪽에서 본인들 테스트를 위해서 만들걸 전체 공개했다 정도로 소개된다.
그리고 이외의 iOS테스트를 수행해주는 방법을 계속 검색해봤지만, 대부분의 자동화 툴은 Facebook의 WDA를 통해서만 지원하는 걸로 봐서. apple에서 facebook에만 관련 기술을 공개해준게 아닐까 생각된다.
ADB
등의 역할을 하는 library를 Script를 수행하고자 하는 Mac PC에 설치하여야 한다. 필요 library를 하나씩 소개한다.brew install carthage
Home Brew
를 먼저 설치해야한다.brew install libimobiledevice
brew uninstall ideviceinstaller
정상적으로 설치되었다면 다음 명령어 instruments -s devices
수행 시 연결된 iphone목록이 표시된다.신뢰할 수 있는 기기
설정을 해야한다.https://github.com/appium/WebDriverAgent.git
입력 후 Clone
이후에는 계속 다음~다음~다음 수행/Users/cholong/Documents/WebDriverAgent
해당 폴더에 소스가 있다../Scripts/bootstrap.sh -d
명령어를 수행한다.cd /Users/cholong/Documents/WebDriverAgent
./Scripts/bootstrap.sh -d
Download Manual Profile
버튼을 눌러서 권한을 내려받아야 한다.WebDriverAgentRunner
를 선택하고 실행대상에 연결된 iphone장비
를 선택한 후 수행을 한다.사용자 기기의 인증서에 접근허가
메시지가 출력되고 비밀번호를 물어보게되고, 정상적으로 입력한 후 정상설치되면 다음과 같은 메시지가 출력된다. 해당 WebDriverAgent는 정상적으로 app store를 통해서 배포된 버전이 아니므로 iphone에서 신뢰할 수 있는 인증서 등록을 해야 사용할 수 있다는 메시지다.cd /Users/cholong/Documents/WebDriverAgent
UDID=$(idevice_id -l | head -n1)
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=$UDID" test
정상적으로 수행될 경우 다음과 같이 Device에 서버가 실행되었다는 메시지가 나온다.FacebookWDA library설치하기
다음 명령어를 통해서 설치한다.
pip3 install -U facebook-wda
Mac과 디바이스에 설치된 WebDriverAgent를 portforwarding하기
iproxy프로그램을 통해 연결수행한다. 사용법은 다음과 같이 iproxy명령어 이후에
<localhost에 노출될 port>, <webdriver의 port>, <연결할 기기의 udid>순으로 입력한다.
iproxy <local port> <remote port> [udid]
udid같은 경우 사전에 idevice_id -l | head -n1
를 통해서 조회된 값을 사용한다.
정상적으로 수행할 경우 다음과 같다.
iproxy <local port> <remote port>
Device연결 Script수행하기
Device에 연결을 하는 다음 스크립트를 수행한다.
import wda
# 디바이스 연결
c = wda.Client()
print(c.status())
# 홈버튼 클릭
c.home()
# 수행결과 확인
c.healthcheck()
수행소스 URL : https://github.com/jjunghyup/FacebookWDASample/blob/master/connect_sample.py