これが私がやろうとしていることです。
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);
}