2010-07-06 4 views
0

iphoneOS 4.0에서 새로이 노출 된 프레임 워크 UI 자동화를 연구 중입니다. 누구나이 프레임 워크를 사용하여 응용 프로그램을 테스트 했습니까? 나는 어떤 도움을 주셔서 감사합니다.UI 자동화 FrameWork for iPhone

텍스트 필드와 버튼 만있는 샘플 응용 프로그램을 테스트하려고합니다. 스크립트를 작성했습니다.

 

UIALogger.logStart("Starting Test"); 

var view = UIATarget.localTarget().frontMostApp().mainWindow().elements()[0]; 
var textfields = view.textFields(); 
if (textfields.length != 1) { 
    UIALogger.logFail("Wrong number of text fields"); 
} else { 
    UIALogger.logPass("Right number of text fields"); 
} 

textfields[0].setValue("anurag"); 

view.buttons()[0].tap(); 
 

문제는 텍스트 필드의 값이 설정되지 않고 버튼이 두드려지지 않는다는 것입니다. 악기를 실행할 때 텍스트 필드와 버튼이있는보기 만 나타나고 notting이 발생합니다.

악기에 "다른 문제가 발생했습니다"라는 메시지가 있습니다.

답변

4

기본 창에 단추와 텍스트 필드가 계층 구조에 순서대로 포함되어 있으면 첫 번째 코드 줄에서 UIAButton 요소가 반환되므로 다음 줄이 잘못되었습니다. 호출하려고하기 때문에 버튼의 textFields().

var view = UIATarget.localTarget().frontMostApp().mainWindow(); 
var textfields = view.textFields(); 
if (textfields.length != 1) { 
    UIALogger.logFail("Wrong number of text fields"); 
} else { 
    UIALogger.logPass("Right number of text fields"); 
} 

을 그리고 내가 생각하는 경우에 탭 및 텍스트 필드 테스트의 두 가지 방법이 있습니다

첫 번째 부분은 다음과 같아야합니다.

textfields[0].setValue("anurag"); 
view.buttons()[0].tap(); 

또는 같은

:이처럼

view.elements()[1].setValue("anurag"); 
view.elements()[0].tap(); 

그리고 개인적으로 접근성 라벨 대신 인덱스를 사용하여 객체를 점점 선호합니다. 더 자세한 정보를 보려면 UIAElement 클래스 참조을 찾아 여기 좀 봐 : UI Automation Reference Collection

-2

이 모든 물건이 먹힐 응용 프로그램이 접근성 것 (자신의 접근성 프로토콜로 만든 경우에만 : 모든 UI를 태그에 의해 Accessibility 레이블을 뷰의 고유 한 값으로 설정하여 이름이있는 Interface Builder의 컨트롤). 또는 iPhone 표준 컨트롤로 작업하는 경우

응용 프로그램에 이와 같은 내용이없는 경우 UI 자동화로 많은 작업을 수행 할 수 없으며 320x480 빈 캔버스 만 표시됩니다.

좀 더 자세한 내용은 link에서 확인할 수 있습니다.

예를 들어 접근성 태그가없는 OpenGL 응용 프로그램에서 작업하고 320x480 빈 양식 외에 UI 자동화를 통해 아무 것도 볼 수 없습니다.

+2

이것은 사실이 아닙니다. 접근성 레이블은 UI 자동화를 사용할 필요가 없습니다. 액세스 가능성 레이블을 설정하면 UI 자동화 용으로 작성된 스크립트를 읽기 쉽고 유지 관리하기가 더 쉬워집니다. target.frontMostApp(). elements() [0]을 호출하는 대신 target.frontMostApp(). mainWindow(). elements() [ "Login Button"]을 호출 할 수 있습니다. 라벨을 사용하는 것이 좋지만 필수는 아닙니다. – Yetti