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

Ios UI自动化测试:如何选择UI值?,ios,testing,ios4,uipickerview,ios-ui-automation,Ios,Testing,Ios4,Uipickerview,Ios Ui Automation,我在尝试为我的iPhone应用程序编写一些自动测试时遇到了障碍。我觉得这应该选择UIPickerView第一个组件的第一行: var picker = UIATarget.localTarget().frontMostApp().mainWindow().pickers()[0]; var aWheel = picker.wheels()[0]; var someVals = aWheel.values(); aWheel.selectValue(someVals[0]); 但我得到了以下错

我在尝试为我的iPhone应用程序编写一些自动测试时遇到了障碍。我觉得这应该选择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单元格/组件上设置可预测的值?目前,它们都使用自定义UIView,而不是标准标签

  • 以某种方式从我现有的单元格中获取一个值数组以进行迭代

我在这里遗漏了什么?

您的代码看起来是正确的。不过,您需要添加一些支票。我认为您的选择器是空的,或者您没有有效的处理程序。 下面是我如何使用我的代码来完成它。希望能有帮助

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);
}

您的代码看起来是正确的。不过,您需要添加一些支票。我认为您的选择器是空的,或者您没有有效的处理程序。 下面是我如何使用我的代码来完成它。希望能有帮助

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);
}
SelectValue()
似乎不适用于文本值。不过,它适用于数字

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

SelectValue()
似乎不适用于文本值。不过,它适用于数字


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

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

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

我也有这个问题

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

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

aWheel.selectValue(newValue)

这对我有效

我也有这个问题

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

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

aWheel.selectValue(newValue)

这对我有用