我执行以下操作:

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()获得的对象使用“每个”函数时,发生了“ [object UIAElementNil]不是函数”。我添加到UIAElementArray.prototype中的每个属性如何设置为[object UIAElementNil]?当我在真实设备上运行UIAutomation测试时,在Simulator上运行时,这种事情出奇地发生了。

最佳答案

绝对可以扩展UIAElementArray(不是btw,objective-c)。 tuneup.js使用与上面相同的方法,并且运行良好,并且我使用相同的方法来扩展UIAElementArray。我无法说出为什么您的脚本报告您正在击中UIAElementNil,但是您对UIAElementArray的扩展似乎是正确的。

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

关于javascript - 是否可以使用我自己的方法扩展UIAElementArray?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10316621/

10-09 14:55