Google Toolbox for Mac を使用してアプリケーションをテストしています。私が取り組んでいるテストでは、シェイク イベントが発生すると、専用コントローラーがメッセージを Web ビューに送信し、HTML ページが「スクリーンショット」を実行して正しく応答することを確認します。
私が抱えている問題は、webview を読み込む時間がないと機能しないことです。そこで、ちょっとしたトリックを使ってテストを「一時停止」し、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 秒未満で使用すると機能しないことです。これは、ローカル ファイルをロードするのに非常に長い時間です...
さらに、後で、webView で javascript を実行します。
stringByEvaluatingJavaScriptFromString:
、アニメーションが実行されるのを待つ必要があるため、同じコードを使用します。
NSDate *restart = [NSDate date];
while ( [runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]
&&
(-[restart timeIntervalSinceNow]) < allowedTimeToLoadALocalFileInWebView
);
これには 50 秒ほどかかります。(アニメーションは1秒も続きません...)
(-[restart timeIntervalSinceNow]) < allowedTimeToLoadALocalFileInWebView は、2 番目のケースで runMode:beforeDate: が私の allowedTimeToLoadALocalFileInWebView よりも時間がかかるように見えるため、役に立たないと思います。
私も使ってみました
[NSThread sleepForTimeInterval:allowedTimeToLoadALocalFileInWebView];
ただし、これにより結果が表示されなくなります。
webview の読み込みにローカル ファイルの読み込みに時間がかかる理由について何か考えはありますか? runMode:beforeDate: を使用せずにアニメーションを待機する別の方法は?
ありがとうございました