2012-04-25 108 views
1

我做到以下几点:可以用我自己的方法来扩展UIAElementArray吗?

function extend(destination, source) { 
    for (var property in source) { 
    destination[property] = source[property]; 
    } 
    return destination; 
}; 

extend(UIAElementArray.prototype, 
{ 
     each: function(f) 
     { 
     for (i = 0; i < this.length; i++) 
     { 
      f(i, this[i]); 
     } 
     }, 

     findFirst: function(f) 
     { 
     for (i = 0; i < this.length; i++) 
     { 
      if (f(this[i])) return this[i]; 
     } 
     return null; 
     }, 

     findLast: function(f) 
     { 
     for (i = this.length - 1; i >= 0; i--) 
     { 
      if (f(this[i])) return this[i]; 
     } 
     return null; 
     } 
}); 

但是当我尝试使用对象,这是我从mainWindow.tableViews(获得 “每个” 功能)[0] .cells(),“[对象UIAElementNil]不是一个功能“发生。如何将每个添加到UIAElementArray.prototype的属性设置为[object UIAElementNil]?这种事情发生时,当我在真实设备上运行UIAutomation测试时,在模拟器上它起作用,令人惊讶。

回答

-3

在Objective-C中,您可以扩展任何类并使用类别将自定义方法添加到它们。

+0

这个答案完全忽略了这一点。问题出在基于JavaScript的UIAutomation上。无论如何,与ObjectiveC没有任何关联。 – Till 2012-09-14 23:39:54

1

绝对可以扩展UIAElementArray(不是,btw,objective-c)。 tuneup.js使用上面使用的相同方法并且工作正常,并且我使用了相同的方法来扩展UIAElementArray。我无法说出为什么你的脚本报告你正在击中UIAElementNil,但是你对UIAElementArray的扩展看起来是正确的。

这里真正的问题可能是“为什么在模拟器上工作,而不是设备?”。设备是否运行iOS 5或更高版本?我已经看到iOS 4.3设备可以正常工作(大部分情况下),而脚本记录或写入5,但我也看到更复杂的脚本在4.3设备上变得不稳定。

相关问题