我试图为我的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
任何想法我都可以
或
我在这里缺少什么?
答案 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()
似乎不适用于文字值。但它适用于数字。
对于文本值,我只是获取当前值并点击直到找到它。