我执行以下操作:
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/