1

これが私がやろうとしていることです。

1)「どこで買い物をしていますか?」と尋ねるアラートビューが1つあります。このアラートには、スキップ/キャンセルと続行の 2 つのボタンがあります。2) スキップ ボタンをクリックすると、「近くのリスト:」というタイトルの別のアラート ビューがポップアップし、ユーザーが任意の店を選択できる近くの店の tableView リストが表示されます。これには、キャンセル ボタンが 1 つしかありません。(キャンセル ボタンはアラートを閉じ、ホームページに戻ります)

私の問題は、デフォルトのハンドラーをバイパスしようとするときです

    UIATarget.onAlert = function onAlert(alert) {
        var title = alert.name();
        UIALogger.logWarning("Alert with title ’" + title + "’ encountered!");
        if (title == "Where are you shopping?") {
            alert.buttons()["Skip"].tap();
            return true; // bypass default handler
        }
        return false; 
        }

これによりスキップ ボタンがタップされ、2 番目のアラートがポップアップ表示され、2 番目のアラートでデフォルト ボタンがタップされます。そのためのコードを記述していなくてもです。

最初のアラートのスキップ ボタンをタップし、2 番目のアラートのセルの 1 つをタップします。そのため、以下のコードを試しましたが、セルをタップせずに 2 番目のアラートを無視します。それを行う方法がわからない。私は初心者なので、助けていただければ幸いです。

    var target = UIATarget.localTarget();
    var app = target.frontMostApp();
    var window = app.mainWindow();
    var testName = "Test 1";

    UIALogger.logStart(testName);


    var buttonScan = target.frontMostApp().windows()[0].buttons()["scan btn"];
    //UIATarget.localTarget().pushTimeout(1);

    target.delay(1);

    //app.logElementTree();

    if (buttonScan.isValid()) {
  buttonScan.tap();

  // first alert box "Where are you shopping"
  UIATarget.onAlert = function onAlert(alert) { // this is never called
      var title = alert.name();
      UIALogger.logWarning("Alert with title ’" + title + "’ encountered!");
      if (title == "Where are you shopping?") {
          alert.buttons()["Skip"].tap();
      return true; // bypass default handler
      }
  return false; 
}

// second alert box "Nearby listings:"
UIATarget.onAlert = function onAlert(alert) {
    var title = alert.name();
UIALogger.logMessage( "Dismiss the keyboard" + title );
    UIALogger.logWarning("Alert2 with title ’" + title + "’ encountered!");
    if (title == "Nearby listings:") {

        return true; // bypass default handler
    }
    return false; // use default handler that is dismissing the alert
   }


      UIALogger.logPass(testName);


   } else {

        UIALogger.logFail(testName);

    }
4

1 に答える 1