1

我在尝试为我的 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,而不是标准标签。

或者

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

我在这里想念什么?

4

4 回答 4

3

我也有这个问题。

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

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

aWheel.selectValue(newValue);

这对我有用

于 2014-07-15T09:47:43.973 回答
2

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

于 2012-08-08T05:19:17.450 回答
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);
}
于 2011-04-11T08:51:55.010 回答
0

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

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

于 2011-12-13T04:51:35.920 回答