Android의 화면 객체를 조작할 수 있도록 Android쪽에서 API를 공개함 이 Library가 UIAutomator2이다. 이 Library를 조작해서 Android의 대부분의 UI영역을 조작 할 수 있음. 대표적인 Framework가 Appium으로 볼 수 있다.
하지만 이번에 소개하는 UIAutomator2는 Appium과 동작방식이 조금 다르다.
Go로 만들어진 서버를 단말기에 설치하여 Script 동작 PC에서 단말기의 서버와 직접 통신을 하고, 수신을 받은 서버가 단말기에 설치된 UIAutomator2 Library를 조작하는 Agent APP과 JsonRPC통신을 하며 GUI영역을 조작한다.
이로 얻을 수 있는 장점은 그전의 Appium Server가 여러대의 단말을 조작하기 위해서는 Appium Server를 다수 띄워야했으나.
UIAutomator2는 그럴 필요가 없다
그리고 속도가 빠르다! appium은 초기단계 init과정에 시간이 많이 소요 되지만, uiautomator2는 init속도가 빨라서 스크립트가 바로 수행된다 → 수행시간 감소
ADB devices
명령어 입력시 다음과 같이 표시되어야한다ATX-Agent Build버전 내려받기
Android Phone에 설치되는 Go서버 이름은 Atx-agent
이다
이 서버를 폰에 설치 하기 위해서는 Android 프로세스 버전에 맞는 설치 파일 압축파일을 내려받아야한다
Download URL: https://github.com/openatx/atx-agent/releases
단 대부분의 android폰은 arm7을 거의 공통적으로 지원하므로 arm7용 버전을 받으면 된다.
ADB에 연결된 Device에 Atx-agent서버 설치
압축 해제 후 해당 폴더로 이동. 폴더에서 다음 명령어를 통해 연결된 Device에 Atx-agent서버 설치
adb push atx-agent /data/local/tmp
adb shell chmod 755 /data/local/tmp/atx-agent
adb shell /data/local/tmp/atx-agent server -d
수행결과
위의 그림에서 보면 마지막 명령어 수행결과 7912포트
로 서버가 수행된걸 확인 할 수 있다
정상 설치 여부 확인 - 7912포트로 서비스가 되는지 확인
adb shell
netstat -anp | grep 7912
UIAutomator2 Library설치
관리자 CMD창을 열고 다음 명령어 입력
pip install -U uiautomator2
ADB에 연결된 Device에 UIAutomator2 설치하기 or 연결하기
Python명령 수행
import uiautomator2 as u2
d = u2.connect() # connect to device
print(d.info)
수행결과 스크립트 수행에 필요한 파일이 정상설치된것을 확인할 수 있다
위에서 선언한 d
객체를 통해서 핸드폰에 명령을 수행다
스크립트 작성방법은 다음 글에서...
설치스크립트 url : https://github.com/jjunghyup/UIAutomator2Sample/blob/master/install_to_device.py
3번에서 막혔네요~ UIAutomator2 Library설치 저 command를 못읽습니다. ㅠ_ㅠ