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它。