Mac 용 Google Toolbox를 사용하여 응용 프로그램을 테스트하고 있습니다. 내가 작업중인 테스트에서는 흔들기 이벤트, 전용 컨트롤러가 메시지를 웹보기로 보내고 HTML 페이지가 "스크린 샷"을 보내서 올바르게 응답하는지 확인합니다.iPhone : 자동화 된 테스트에서로드 할 웹보기 대기
내가 가진 문제는 webview에로드 할 시간이 없다면 작동하지 않는다는 것입니다. 그래서로드 웹보기에 대한 약간의 트릭을 "일시 중지"테스트를 사용하고 기다립니다
#define allowedTimeToLoadALocalFileInWebView 5.5
NSDate *start = [NSDate date];
while (
// webViewLoaded is false at the beginning
///the Test class is a delegate of the webview, and webviewLoaded is set to true when - (void)webViewDidFinishLoad:(UIWebView *)webView is called
!webViewLoaded
&&
[runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]
&&
(-[start timeIntervalSinceNow]) < allowedTimeToLoadALocalFileInWebView
);
이상한 것은 내가 allowedTimeToLoadALocalFileInWebView 작은 5 초 이상을 사용하는 경우 작동하지 않는다는 것입니다, 이는 매우이다
게다가, 나중에, I는
stringByEvaluatingJavaScriptFromString:
와 웹보기에서 자바 스크립트를 실행하고 I이 수행 될 애니메이션 기다릴 필요 그래서 ... 로컬 파일을로드 할 긴 같은 코드를 사용하십시오 :
NSDate *restart = [NSDate date];
while ( [runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]
&&
(-[restart timeIntervalSinceNow]) < allowedTimeToLoadALocalFileInWebView
);
그리고 이것은 50 초 정도 걸립니다! beforeDate이 : 두 번째 경우에 내 allowedTimeToLoadALocalFileInWebView보다 더 많은 시간이 걸린다는 RunMode에가 나타납니다 이후 < allowedTimeToLoadALocalFileInWebView 쓸모 - ([timeIntervalSinceNow를 다시 시작])
내가 생각 (애니메이션도 ... 두 번째 지속되지 않음) . 는 또한[NSThread sleepForTimeInterval:allowedTimeToLoadALocalFileInWebView];
을 사용하려고하지만이 결과를 볼 수 있도록 방지 할 수 있습니다.
로컬 파일을로드하는 데 webview를로드하는 데 너무 오래 걸리는 이유에 대해 알고 계십니까? 그리고 runMode를 사용하지 않고 애니메이션을 기다리는 또 다른 방법은 : beforeDate :?
고맙습니다.
답변 주셔서 감사합니다. 실제로는 webViewDidFinishLoad를 사용합니다. 위임자로 TestCase를 사용하고 위임 메서드가 호출되면 webViewLoaded가 YES로 설정됩니다. 문제는 테스트 방법이기 때문에 다음 테스트를 시작하기 전에 완료해야하기 때문에 모든 테스트가 호출되었다고 확신 할 수 있습니다. 따라서 위임 메서드에서는 테스트를 수행 할 수 없습니다. 게다가 (webViewLoaded) webview가로드되지 않는 동안에도 멀티 스레드가 아닌 것 같습니다. 마지막으로 중요한 것은 두 번째 테스트에서 javascript 명령을 수행하며 webViewDidFinishLoad를 호출하지 않습니다. – Julien