Robotium API 기능 알아보기
UI Automator Viewer 를 사용하여 화면 정보 얻기
UI Automator Viewer 는 Android SDK를 설치하면 같이 설치된다. 경로는 sdk 설치된 폴더에서 sdk/tools 폴더 안에 uiautomatorviewer.bat 파일로 있다.
폰을 연결한 후 viewer를 실행시킨 뒤 왼쪽 상단 device screenshot을 클릭하면 현재화면이 나타난다. 각 구성요소를 선택하면 우측에 정보가 나타난다.
▲uiautomator viewer 실행 후 화면 정보 얻어오는 모습
이제 여기서 얻은 정보를 로보티움에 사용한다.
버튼 클릭하기
Solo.clickOnView(View view) 로 클릭
ex) solo.clickOnView(solo.getView(id)); 버튼의 resourceid를 입력하여 클릭
네이버 앱인 경우 메뉴버튼을 누르고자 할 때
메뉴버튼의 resource-id 는 header_open_slide 인걸 볼 수 있다.
그리하여 solo.clickOnView(solo.getView("header_open_slide")); 이렇게 해주면 메뉴버튼을 누를 수 있다.
텍스트를 찾아 클릭하기
solo.clickOnText(java.util.regex.Pattern.quote(String text));
해당 text를 찾아 클릭한다.
ex) solo.clickOnText(java.util.regex.Pattern.quote("확인")); 확인이 써져있는 버튼을 클릭
그리드뷰 구성에서 항목 선택하기
solo.clickInList(int line);
그리드뷰로 구성된 화면에서 resource-id가 없는 경우가 있는데 이럴 때 index 번호로 클릭할 수 있었다. 각 영역에는 index가 있었다.
예를 들면 위 사진에서 index 5번 사진을 클릭하고 싶으면 solo.clickInList(6); 을 해주었더니 클릭되었다. index+1 로 값을 넣어주면 선택이 되었다.
레이아웃 index를 사용하여 클릭하기
solo.clickOnImage(int index);
버튼은 있는데 resource-id가 없는 경우가 있었다. 그래서 찾아보니 clickOnImage로 클릭할 수가 있었는데 레이아웃 index를 사용하였다.
위 사진에서 보듯이 버튼에는 id가 없지만 레이아웃 자체에 index가 있었다. solo.clickOnImage(2) 를 해주니 클릭은 되었는데 다른 영역에도 index가 있어서 구분하여 사용하는 방법을 알아봐야할 것 같다.
스크롤 및 슬라이드 하기
solo.drag(float fromX, float toX, float fromY, float toY, int stepCount) 를 이용하여 스크롤 동작 확인
변수 설명
float fromX : 가로좌표 시작점
float toX : 가로좌표 도착점
float fromY : 세로좌표 시작점
float toY : 세로좌쵸 도착점
int stepCount : 드래그 속도(숫자가 작을수록 드래그가 빠름)
상하 스크롤의 경우 X좌표 고정 후 Y좌표로 구현 ex) solo.drag(100,100,50,350,40) 가로는 100,100위치에 고정 세로로 50부터 350까지 드래그
좌우 슬라이드일 경우 반대로 Y좌표 고정 후 X좌표로 구현
단, 해상도에 따른 정확한 좌표를 구하는 방법이 필요하다. 720x1280 기준의 좌표와 400x800 기준의 좌표는 다를 것이다. 절대좌표가 있는지는 모르겠음.
스크롤 내리기
solo.scrollDown();
드래그가 아닌 그냥 스크롤로 화면을 내려준다.
텍스트 찾기
solo.searchText(String text);
text를 찾는다. 반환 값은 boolean 값. ex) boolean text_search = solo.searchText("안녕");
solo.waitForText(String text);
특정 문자열이 나타날 때까지 기다린다. 기본값은 20초 이며 찾으면 true, 못 찾으면 false를 반환
solo.waitForText(String text, int minimumNumberOfMatches, long timeout);
minimumNumberOfMatches : 일치되는 최소 개수
timeout : 대기 시간 설정 (단위 밀리세크 1000ms =1초)
텍스트 입력하기
solo.enterText(int index,String text);
index : 텍스트 입력 창의 index값
text : 입력할 텍스트
ex) solo.enterText( 1, "안녕하세요");
solo.enterText(android.widget.EditText editText, String text);
editText : 텍스트 입력 창의 editText id 값
text : 입력할 텍스트
ex) solo.enterText((EditText)solo.getView("id"), "안녕하세요");
EditText 내 텍스트 삭제
solo.clearEditText(int index);
index : EditText의 index
'지식메모 > 자동화' 카테고리의 다른 글
테스터로서 느낀 4가지 실수들 (0) | 2016.06.14 |
---|---|
appium 에서 특정영역을 좌우로 swipe 하기 (2) | 2016.05.23 |
Appium 자동화 상하좌우 스크롤 하기 (0) | 2016.03.23 |
로보티움 튜토리얼 실행해보기 (0) | 2015.09.04 |
Selenium & Webdriver 자동화 테스트 예제 - Naver 지식인 (크롬 브라우저) (0) | 2015.01.23 |