2012-06-04 2 views
0

UIAutomation을 사용하여 앱을 테스트하고 싶습니다. 내가 겪고있는 문제는 네트워크에서 데이터를 다운로드해야한다는 것입니다. NSNotification이 게시 될 때까지 UIAutomation 스크립트를 일시 중지 할 수있는 방법이 있습니까? 아니면 데이터를 다운로드하는 데 필요하다고 생각되는 것보다 길어야 delay()이 필요합니다. 설정된 시간을 기다리는 것은 데이터를 다시 다운 로딩 할 필요가 없기 때문에 바람직하지 않습니다.UIAutomation 및 NSNotification

도움/링크를 크게 높이세요.

답변

1

Jack의 답변은 대부분의 세부 정보에서 작동하지만 일부 네트워크 작업은 백그라운드 대기열에서 발생하며 진행 표시기가 없습니다.

나는 CGRectZero UIView를 요소에 집어 넣는 도우미를 작성했습니다. 이 요소가 유효해질 때까지 기다릴 수 있습니다. 내가 원했던만큼 깨끗하지는 않지만 깨어나고있다.

waitForElementNamed: function(name, element, timeout) { 
    timeout = timeout || 10 
    log("Waiting for " + timeout + " seconds") 
    var valid = false 
    for (var i = 0; i < timeout; i++) { 
     UIATarget.localTarget().pushTimeout(.5) 
     valid = element.elements()[name].isValid() 
     if (valid) { 
     log("Found Element " + name) 
     return 
     } 
     UIATarget.localTarget().popTimeout() 
     target.delay(.5) 
    } 
    if (!valid) { 
     failed("Wait Timedout [" + timeout + "]") 
    } 
} 

꽤 좋지는 않지만 작동합니다.

+0

예쁘지는 않지만 작동합니다. :) –

2

UIAutomation에는 waitForInvalid()이라는 멋진 기능이 있습니다. 데이터가 다운로드 된 후 표시되고 제거 된 진행률 표시 줄이 있으면이를 사용할 수 있습니다.

이 기능은 사용자가 이미 데이터를 가지고 있고 UI가 표시되지 않는 경우에도 사용할 수 있습니다. 기능이 즉시 반환되기 때문입니다.