UI自动化测试:如何选择UIAPickerWheel值?

时间:2011-04-02 13:56:16

标签: ios testing ios4 uipickerview ios-ui-automation

我试图为我的iPhone应用程序编写一些自动化测试时遇到了障碍。判断from the documentation我觉得这应该选择UIPickerView的第一个组件的第一行:

var picker = UIATarget.localTarget().frontMostApp().mainWindow().pickers()[0];
var aWheel = picker.wheels()[0];
var someVals = aWheel.values();

aWheel.selectValue(someVals[0]);

但是我得到了以下错误,记录在仪器中:

       Exception raised while running script: - selectValue requires a valid value

任何想法我都可以

  • 在我的UIPickerView单元格/组件上设置可预测的值?目前,它们都使用自定义UIViews,而不是标准标签。

  • 以某种方式从我现有的单元格中获取一系列值来迭代?

我在这里缺少什么?

4 个答案:

答案 0 :(得分:3)

我也有这个问题。

尝试var newValue = someVals[0].toString();

然后使用newValue在您的选择器中选择您的值:

aWheel.selectValue(newValue);

这对我有用

答案 1 :(得分:2)

对我来说,如果方向盘中的值为空,有空格或有一些特殊字符,则选取器轮对象上的selectValue方法不起作用。我最终不得不使用tapWithOptions({ tapOffset: { x: 0.23, y: 0.72 } })

答案 2 :(得分:1)

您的代码看起来是正确的。你需要添加一些检查。我认为你的选择器是空的,或者你没有一个有效的处理程序。 这是我如何做我的代码。希望它有所帮助。

target      = UIATarget.localTarget();
app         = target.frontMostApp();
mainWindow  = app.mainWindow();


function selectOffice() {

    UIALogger.logStart("selectOffice");

    var validField = false;

    try {

        var picker = mainWindow.pickers()[0];

        if (picker.isValid()) {

            var wheel = picker.wheels()[0];

            if (wheel.isValid()){

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

                if (nrOfItems > 0 ) {
                    wheel.selectValue(pickedItems[nrOfItems-1]);
                    validField = true;
                }
            }
        }
    }
    catch(error) {
        UIALogger.logFail(error);
    }

    if (validField == true ) {
        UIALogger.logPass("selectOffice");
    } else {
        UIALogger.logFail("Couldnt find a valid control");
    }
    target.delay(1);
}

答案 3 :(得分:0)

SelectValue()似乎不适用于文字值。但它适用于数字。

对于文本值,我只是获取当前值并点击直到找到它。