这是我正在尝试做的事情。
1) 我有一个 alertView 询问“你在哪里购物?”。此警报有两个按钮跳过/取消和继续。 2) 通过单击跳过按钮,它会弹出另一个标题为“附近列表:”的 alertView,并显示附近商店的 tableView 列表,用户可以从中选择任何商店。这个只有一个取消按钮。 (取消按钮解除警报并返回主页)
我的问题是每当我试图像这样绕过默认处理程序时
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;
}
点击跳过按钮,弹出第二个警报,在第二个警报上点击默认按钮,即使我没有为此编写任何代码。
我想点击第一个警报的跳过按钮,然后点击第二个警报的其中一个单元格。所以我尝试了下面的代码,但它仍然在不点击单元格的情况下解除了第二个警报。不知道该怎么做。我是初学者,非常感谢任何帮助。
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);
}
最佳答案
在获取 UITarget
实例之前尝试设置您的 onAlert
处理程序。
例如:
// 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;
}
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();
//alert should happen here
关于javascript - iOS UI 自动化 : Handling two alertViews, 其中一个触发另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17157793/