4

アプリを最初に起動すると、アプリが現在地を使用することを許可するかどうかを尋ねる許可アラートが表示されます。私のonAlertメソッドは、デバイスのアラートを正常に却下しました。シミュレーターで実行すると、呼び出されません。その他の内部アラートはonAlert、シミュレーターのメソッドによって処理されます。からのアクセス許可アラートSpringBoardは、シミュレーターでは処理されません。何か案は?

UIATarget.onAlert = function onAlert(alert)
{
    var title = alert.name();
    UIALogger.logMessage(title);
    return false;
}
4

3 に答える 3

1

この問題は、アプリが実際に起動して自動化環境が初期化される前に、表示されているアラートがシステム自体から発生しているため発生します。

これを確認するには、 の関数定義の前にデバッグ行を追加しますUIATarget.onAlert

UIALogger.logDebug("Now setting up the alert function");
UIATarget.onAlert = function onAlert(alert) {}

次に、Reset Content and Settings...シミュレーターで自動化を再実行します。現在の場所の使用に関するアラートを手動で閉じる までデバッグ行は表示されないことに注意してください。

これがJavaScriptコードからどのように修正できるかわかりません。アプリが適切に起動するまでアラートを遅らせるか、この回答に示されている例に従う必要があります。

于 2013-12-11T16:02:25.020 に答える
0

デフォルトのハンドラーが機能しない場合は、「return false」の代わりに「return true」を使用して、ポップオーバーを手動で閉じることができます。'return true' ステートメントの前に、希望するボタン (dismiss ボタン) をタップするためのステートメントを記述できます。

于 2013-01-22T14:20:31.930 に答える
0

起動直後にアラートを表示するアプリでも同じ問題が発生しました。要素ツリーをログに記録すると、追加のアラート ウィンドウが表示され、UIAutomation にアラートの [OK] ボタンをタップさせることができました。しかし、アラート ハンドラは呼び出されませんでした。
その理由は、UIAutomation がアラートを処理するように適切に設定される前にアラートが表示されたためです。アラートの表示を遅らせた場合、UIAutomation はそれをキャッチしました。

于 2013-01-30T06:44:54.937 に答える