UIAutomation isValid()立即替代

时间:2013-09-08 10:17:07

标签: ios integration-testing ui-automation ios-ui-automation

我正在使用UIAutomation为iOS应用编写集成测试。

作为测试套件的一部分,我已经整合了一个重置​​功能,只要它存在,就会通过点击左UINavigationBar项将应用程序返回到主菜单。

这是用于执行此操作的代码(用tuneup.js编写):

function reset (app) {
    // While we have a left button on the nav bar, tap it.
    // This effectively resets our app

    while(app.mainWindow().navigationBars()[0].leftButton().isValid()) {
        app.mainWindow().navigationBars()[0].leftButton().tap();
    }
}

它的目的就在于它。

但是,如果isValid()无法立即找到对象,isValid()将等待几秒钟。因此,集成测试的运行速度非常慢,因为每次重置后我们都会点击主菜单,{{1}}将等待一段时间,看看是否会出现左UINavigationBar项目。

是否存在替代函数或替代实现,以便在没有强制超时的情况下确定元素是否存在?

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令将默认超时覆盖为0

UIATarget.localTarget().pushTimeout(timeoutInSeconds);

然而,在0超时的时间周期内检查验证似乎不是一个好主意。

function reset (app) {
    // While we have a left button on the nav bar, tap it.
    // This effectively resets our app

    UIATarget.localTarget().pushTimeout(0);
    if (app.mainWindow().navigationBars()[0].leftButton().isValid()) {
        app.mainWindow().navigationBars()[0].leftButton().tap();
    }
    UIATarget.localTarget().popTimeout();
}