UIAutomation iOS:在大多数测试运行中,Picker轮无效

时间:2013-10-08 10:31:24

标签: ios jenkins ios-simulator ios-ui-automation

我已经使用UIAutomation API编写了大量测试。测试由Jenkins启动并使用Tuneup JS。

我的问题是捡拾轮。一些测试会遇到一个拾取轮,并且由于元素无效UIAElementNil而几乎总是会失败。我已经尝试使用推荐的target.pushTimeout()来允许测试时间来获取拾取器轮元素,并且没有运气。

每次使用拣选轮的测试有时(但很少)通过,所以我非常确定代码本身不是问题。

有没有人遇到类似的问题,自动化测试和选择器轮子找到了解决这个问题的原因或解决方案?

target.pushTimeout(PICKER_WHEEL_DELAY);
rowTap(window.tableViews()[0], PRICE);

validField1 = false;
validField2 = false;

try {

    var picker = app.windows()[2].elements()[0].pickers()[0];
    if (picker.isValid()) {

        var wheel1 = picker.wheels()[0];
        var wheel2 = picker.wheels()[1];

        if (wheel1.isValid()){

            var pickedItems = wheel1.values();
            var nrOfItems = pickedItems.length;

            if (nrOfItems > 0 ) {
                wheel1.selectValue(MIN_PRICE_NEW_HOME);
                validField1 = true;
            }
        }

        if (wheel2.isValid()){

            pickedItems = wheel2.values();
            nrOfItems = pickedItems.length;

            if (nrOfItems > 0 ) {
                wheel2.selectValue(MAX_PRICE_NEW_HOME);
                validField2 = true;
            }
        }
    }
}
catch(error) {
    UIALogger.logFail(error);
} finally {
    if (validField1 != true  || validField2 != true) {
        cleanUpAfterPickerFail(app);
        throw "failed: Couldnt find a valid picker wheel";
    }
}

app.windows()[2].elements()[0].toolbars()[0].buttons()["Done"].tap();
target.popTimeout();

1 个答案:

答案 0 :(得分:1)

可抛出异常的唯一行是try块中的第一行:

var picker = app.windows()[2].elements()[0].pickers()[0];

您可以使用isValid()引入您在此下方执行的检查,但如果您可以通过底部的记录按钮再次检查轮子是否可用并且路径正确,则可以采用最佳方法。