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