2

이미지, 레이블 및 단추가있는 사용자 지정 셀이 거의없는 표를 표시하는 TableViewController를 포함하는 매우 간단한 응용 프로그램을 가지고 있습니다. 단추를 누르면 actionSheet가 표시됩니다. 그래서 내 사용자 지정 자바 스크립트 (Instruments-UIAutomation 사용)에서 내 테이블의 단추를 누르고 싶습니다. (아무 문제없이 그 작업을 수행 할 수 있습니다) actionSheet가 나타나면 단추 하나만 누르면됩니다 (취소 단추) 그것은 보여줍니다.JavaScript로 UIAutomation에서 actionSheet (및 그 버튼)에 액세스하는 방법?

그리고 제대로 수행하는 법을 모르겠습니다. 그래서 여기 내 JS 코드입니다 :

var target = UIATarget.localTarget(); 
var app = target.frontMostApp(); 
var main = app.mainWindow(); 

main.tableViews()[0].cells()[1].buttons()["DetailsButton"].tap(); 
target.delay(5); 
main.actionSheet().elements()[0].tap(); 

그리고 그게 내가 갖는 메시지이다 : 나는 또한 actionSheet().buttons()[0].tap(); 시도했습니다

Script threw an uncaught JavaScript error: 'undefined' is not a function (evaluating 'main.actionSheet()') on line 9 of New%20Script 

- 도움이 같은 오류가 계속되지 않았다.

나는 심지어 accessibleLabel의에 의해 actionSheet에 액세스하려고 :

[actionSheet showInView:[UIApplication sharedApplication].keyWindow]; 

요소 계층 구조는 것 같다 :

main.actionSheet()["CellNumberSheet"].elements()[0].tap(); 

이 도움이 될 경우에, 그것은 내 actionSheet을 보여주는있어 방법 옳은.

enter image description here

웹에서 그것에 도움이되는 정보를 원하시면 ... 그래서 어떤 도움을 주시면 감사하겠습니다을 많이 찾지 못했습니다 ...

답변

1

은 실제로 당신이 app.actionSheet를 사용해야합니다() 얻을 수 있습니다 작업 표.

이 작동합니다

app.actionSheet().elements()[0].tap(); 

UIAApplication를 참조

+0

난 당신이 제안한 방법으로 actionSheet의 버튼을 누르려고 할 때 여전히 지금 ... 작동하지 않습니다하지만 이것은, 조금 더 나를 소요, ​​다른 오류가 나타납니다'수행 할 수 없습니다 잘못된 요소에 대한 조치 : target.frontMostApp(). actionSheet(). elements() [0]'...의 UIAElementNil 또한 checkIsValid() ','isEnabled()','isVisible()'을 actionSheet()에 적용하면 false를 반환하고,'actionSheet() .name()'은 빈 문자열을 반환합니다. 그것은 "CellNumberSheet"라는 유효한 이름을 가지고 있습니다) ... – arrteme

+1

재미있는 점은, app.windows() [2] 사용하는 방법입니다.actionsheet에 접근하기 위해 elements() [1]? – Sugre

+0

마지막으로 actionSheet에 액세스하도록 제안한 방법은 잘 작동하며 isVisible, checkIsValid 및 isEnabled와 같은 모든 메서드는 True를 반환합니다. actionSheet의 버튼을 탭할 수는 없지만! app.windows() [2] .elements() [1] .elements() [0] .tap()'과'app.windows() [2] .elements() [1] .buttons() [0] .tap()'. 성공하지 못하면 "잘못된 요소에 대해 작업을 수행 할 수 없습니다"라는 오류가 발생합니다. 일시적으로 솔루션을 사용하여 여기에 설명 된대로 asctionSheet 버튼을 탭합니다. http://stackoverflow.com/a/5331896/3065769 – arrteme

0

사용해보십시오이 :

//check that action sheet is on the screen 
    app.actionSheetIsValid(); 

//add some delay 
    target.delay(2); 

//check that the button is on the actionSheet 
    actionSheet.actionSheetButton("Cancel"); 

//add some delay 
    target.delay(2); 

//touch Exit button 
    actionSheet.tapActionSheetButtonByName("Cancel"); 
2

당신이 다음과 같이 사용해야합니다 actionSheet에 눌러 원하는 :

var target = UIATarget.localTarget(); 
var app = target.frontMostApp(); 
var window = app.mainWindow(); 

target.frontMostApp().actionSheet().buttons()["Cancel"].tap(); 

하지만 너 se window.actionSheet() 오류가 반환됩니다.

iOS8의에
6

, 액션 시트 버튼과 요소는 그냥 SparkInspector 체크 그렇게 작동하지 않았고 지금 Collection 뷰를 사용

이 코드는 취소되지 않습니다 하단의 버튼을 탭합니다 버튼 :

target.frontMostApp().actionSheet().collectionViews()[0].visibleCells()[0].tap()

+0

이것은 iPhone에도 적용되지만 iPad에서는 actionSheet에 액세스해야했습니다. window.popover(). elements) [0] .collectionViews() [0] .visibleCells() [ "새 어플라이언스 등록"]. tap(); –