我是iOS UI Automation的新手。我想通过或不通过测试,具体取决于是否显示警报。所以,到目前为止它看起来像:
#import "onAlert.js"
function run_testLogin(target) {
UIALogger.logStart("Test-Login");
var window = target.frontMostApp().mainWindow();
window .scrollViews()[0].buttons()["Log in"].tap();
app.alert();
}
所以现在我要“UIALogger.logPass(”登录成功“);”或者UIALogger.logFail(“登录失败”);“取决于是否显示过警报。我该如何实现?
答案 0 :(得分:1)
尝试使用类似这样的警告处理程序
UIATarget.onAlert = function onAlert(alert){
var title = alert.name();
if (title == "some alert title"){
UIALogger.logFail("Login failed");
return true;
}
UIALogger.logPass("Login successfully");
return false;
}
您可以获取警报的名称(如上所示),然后在其中失败/传递。
您应该在点击登录按钮后立即插入处理程序
答案 1 :(得分:1)
尝试这样的事情就像使用其他答案所示的警报处理程序,但以不同的方式处理警报。尝试类似:
UIATarget.onAlert = function onAlert(alert)
{
var title = alert.name();
if (title == "Alert name you're looking for")
{
UIALogger.logPass("Test successful");
} else if (title == "Alert name that means login was unsuccessful")
{
UIALogger.logFail("Test failed");
} else
{
// The alert is from something else and may not be a failure
UIALogger.logIssue("Unexpected alert");
}
}
现在,根据警报的内容,您将根据显示的警报更改要执行的操作。如果您可以自动按下默认按钮,那么return false
。否则,按下(UIATarget.localTarget().frontMostApp().alert().buttons()
)和return true
按钮。
这应该在代码中早于触发警报的操作。
编辑:如果您担心警报标题冲突,那么您可以尝试这样的事情:
this.alertHandler =
{
alerts:
{
defaultCase: function(alert)
{
var baseScreen = new BaseScreen();
baseScreen.app().alert().defaultButton().tap();
return true;
}
},
pushAlert: function(title, func)
{
dev.alertHandler.alerts[title]=func;
},
popAlert: function(title)
{
delete dev.alertHandler.alerts[title];
}
};
然后你的onAlert看起来像是:
UIATarget.onAlert = function(alert)
{
if(alert.name() in Device.alertHandler.alerts)
{
return Device.alertHandler.alerts[alert.name()](alert);
} else
{
return Device.alertHandler.alerts.defaultCase(alert);
}
};
您可能需要改为使用数组,以便推送和弹出在语义上是正确的,但我还没有找到一个案例,我需要一个警报处理程序以外的单一警报处理程序,所以我没有打扰额外的编程功能。
答案 2 :(得分:0)
所以最后我最终检查点击它后是否仍然显示登录按钮。所以我的功能看起来像那样:
#import "onAlert.js"
function run_testLogin(target) {
UIALogger.logStart("Test-Login");
var window = target.frontMostApp().mainWindow();
var loginButton = window .scrollViews()[0].buttons()["Log in"];
loginButton.tap();
app.alert();
target.delay(1);
if (loginButton.isVisible())
UIALogger.logFail("Login failed");
else
UIALogger.logPass("Login successfully");
}
我现在唯一关心的是登录过程是否花费太长时间..