2011-04-02 110 views
1

我试图为我的iPhone应用程序编写一些自动化测试时遇到了障碍。看from the documentation我觉得这应该选择我UIPickerView的第一部分的第一行:用户界面自动化测试:如何选择UIAPickerWheel值?

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单元/组件上设置可预测的值?目前,他们都使用自定义UIViews,而不是标准标签。

  • 某种方式得到的值从我现有的电池阵列,以遍历?

我在这里错过了什么?

回答

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

SelectValue()似乎并没有对文本价值的工作。它适用于数字,但。

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

2

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

3

我也有这个问题。

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

然后使用newValue在选择器选择你的价值:

aWheel.selectValue(newValue);

这为我工作