即使我拖延很长时间,UIAutomation也很难做到这一点。在下面的代码段中,UIALogger.logWarning("Alert with title ’" + title + "’ encountered!");
未被记录,但在发生后立即点击。
有时所有3条测试信息都会打印出来,但通常只有前两条。
正如您所看到的,我尝试过添加延迟并测试消息。
UIALogger.logMessage("Tap Signup button");
var signupButton = window.buttons()["Signup Button"];
if (signupButton.checkIsValid())
{
signupButton.tap();
UIALogger.logMessage("test message");
target.delay(3);
if (app.alert())
{
target.delay(3);
UIALogger.logMessage("test message 2");
UIATarget.onAlert = function onAlert(alert)
{
target.delay(10);
UIALogger.logMessage("test message 3");
var title = alert.name();
UIALogger.logWarning("Alert with title ’" + title + "’ encountered!");
alert.buttons()[0].tap();
}
}
target.delay(1);
}
else
{
UIALogger.logError("Signup Button not found");
}
我有完全相同的代码:
UIATarget.onAlert = function onAlert(alert)
{
var title = alert.name();
UIALogger.logWarning("Alert with title ’" + title + "’ encountered!");
alert.buttons()[0].tap();
}
在其他地方,它没有问题。我真的不知道发生了什么事。你呢?
答案 0 :(得分:0)
此处的问题是警报触发后正在设置警报处理程序。您看到所有三条消息显示的时间可能是在应用程序中已经触发警报并且被前一个警报处理程序捕获之后。您要做的是在使用之前声明警报处理程序。我的建议是将你的导入语句作为第一个代码执行。警报可以随时发生,并且最好尽快让您的处理程序到位,以避免因竞争条件导致的奇怪行为。
如果您自己解除警报,则还要返回true
,否则仪器会在处理程序返回后尝试点击按钮,即使它已不存在。这将导致自动化中的错误和/或奇怪的行为。