2

我已经用 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();
4

1 回答 1

1

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

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

您可以使用 介绍您在此下方所做的检查isValid(),但最好的方法是通过底部的记录按钮再次检查轮子是否可访问且路径正确。

于 2013-10-08T13:36:15.230 回答