UI自动化testing:如何selectUIAPickerWheel值?

我试图为我的iPhone应用程序编写一些自动化testing时遇到了障碍。 从文档判断,我觉得这应该select我的UIPickerView的第一个组件的第一行:

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

但相反,我得到以下错误,login仪器:

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

任何想法,我可以

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

要么

  • 以某种方式从我现有的单元格获取一个值的数组遍历?

我在这里错过了什么?

我也有这个问题。

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

然后使用newValue在你的select器中select你的值:

aWheel.selectValue(newValue);

这对我有效

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

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

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

对于文本值,我只是得到当前的值,然后点击,直到find它。