이번편에서는 Android Device에서 내가 조작하고자 하는 Element를 찾고, 이를 조작하는 방법에 대해서 소개한다.
이번편에서도 자동화 테스트 시나리오를 작성하고 그 시나리오에 맞춰서 스크립트를 작성한다.
의식이 선택하는 테스트 대상앱은
두구두구두구!!
캘린더
앱으로 선정!
뚝딱 뚝딱 완성!
Script파일 생성
calendar_test.py 생성 후 실패코드 넣기
시나리오 내용을 주석으로 넣기
weditor
openatx쪽에서 만든 android inspect툴
설치 방법
pip3 install --upgrade weditor
실행방법 CMD창에서 weditor
실행
weditor
실행결과 CMD에 서버를 하나 실행한다
실행됨과 동시에 기본 Browser에 창이 열리고, inspect서버 주소가 입력된다(http://localhost:17310)
Connect
우측의 Dump Hierarchy
버튼 클리시 다음과 같이 Screen Shot이 나오고 관련정보가 표시된다. # device_id정의
device_id = "ce031713d239a82002"
# 핸드폰을 연결한다.
import uiautomator2 as u2
device = u2.connect(device_id)
# 정상적으로 연결된다.
assert not device.alive, "디바이스가 정상적으로 연결되지 않았습니다."
Calendar
앱 실행 # 캘린더 앱을 실행한다.
app_package = "com.samsung.android.calendar"
device.app_start(app_package)
# 프로그램이 정상적으로 수행된다.
pid = device.app_wait(app_package, timeout=20.0)
if not pid:
print("com.example.android is not running")
assert False, f"{app_package}가 정상적으로 수행되지 않았습니다."
# 할일이름값을 정의한다.
import time
task_name = f"{time.time()}_할일"
# 새로운 일정을 등록한다.
# 일정등록 버튼 클릭
d.xpath('//*[@resource-id="com.samsung.android.calendar:id/floating_action_button"]').click()
# 일정 제목에 내용 입력
d.xpath('//*[@resource-id="com.samsung.android.calendar:id/title"]').set_text(task_name)
# 저장 버튼 클릭
d.xpath('//*[@resource-id="com.samsung.android.calendar:id/action_done"]').click()
보기 방식
버튼을 찾은 후 그 오른쪽 element를 지칭하는 script는 다음과 같다.d(text="보기 방식").right(className='android.widget.FrameLayout').click()
이 방식을 사용해 이후 스크립트를 작성
# 일정이 정상적으로 등록되었는지 확인한다.
# 더보기 버튼 클릭
d(text="보기 방식").right(className='android.widget.FrameLayout').click()
# 검색 버튼 클릭
d.xpath('//android.widget.ListView/android.widget.LinearLayout[1]').click()
# task_name으로 검색
d(resourceId="android:id/search_src_text").send_keys(task_name)
# task_name element존재 여부 확인
d(resourceId="com.samsung.android.calendar:id/title", text=task_name).exists()
수행 결과
스크립티 url : https://github.com/jjunghyup/UIAutomator2Sample/blob/master/calendar_test.py
weditor 존재를 알려주셔서 감사합니다 (_ _)