UIAutomator2란?

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속도가 빨라서 스크립트가 바로 수행된다 → 수행시간 감소

다중단말 조작 원리 비교(Appium vs UIAutomator2)

image.png
image.png

설치방법(Python기준)

  1. ADB설치 및 핸드폰 연결방법
    폰마다 방법이 많이 달라서 Galaxy기준 설치방법만 링크한다
    링크
    정상적으로 설정을 했다면 ADB devices명령어 입력시 다음과 같이 표시되어야한다

image.png

  1. ATX-Agent Build버전 내려받기
    Android Phone에 설치되는 Go서버 이름은 Atx-agent이다
    이 서버를 폰에 설치 하기 위해서는 Android 프로세스 버전에 맞는 설치 파일 압축파일을 내려받아야한다
    Download URL: https://github.com/openatx/atx-agent/releases
    단 대부분의 android폰은 arm7을 거의 공통적으로 지원하므로 arm7용 버전을 받으면 된다.
    image.png

  2. 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

수행결과
image.png
위의 그림에서 보면 마지막 명령어 수행결과 7912포트로 서버가 수행된걸 확인 할 수 있다
정상 설치 여부 확인 - 7912포트로 서비스가 되는지 확인

adb shell
netstat -anp | grep 7912

image.png

  1. UIAutomator2 Library설치
    관리자 CMD창을 열고 다음 명령어 입력

    pip install -U uiautomator2

  2. ADB에 연결된 Device에 UIAutomator2 설치하기 or 연결하기
    Python명령 수행

import uiautomator2 as u2
d = u2.connect() # connect to device
print(d.info)

수행결과 스크립트 수행에 필요한 파일이 정상설치된것을 확인할 수 있다
image.png
위에서 선언한 d객체를 통해서 핸드폰에 명령을 수행다
스크립트 작성방법은 다음 글에서...

설치스크립트 url : https://github.com/jjunghyup/UIAutomator2Sample/blob/master/install_to_device.py

profile
안녕하세요~ :)

7개의 댓글

comment-user-thumbnail
2020년 12월 15일

3번에서 막혔네요~ UIAutomator2 Library설치 저 command를 못읽습니다. ㅠ_ㅠ

1개의 답글
comment-user-thumbnail
2021년 1월 13일

추천하주실만한 인스펙터 다른툴 있을까요?
패드에서는 package 못가져와서.. 어쩔수없이 xPath로 앱을 실행시켜주고있는데.. 한계가있네요..

1개의 답글
comment-user-thumbnail
2024년 2월 22일

리눅스 기반으로 설명해주시는건가요? 윈도우인데 리눅스 파일 다운받는게 맞나요?

1개의 답글