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