2012-04-25 116 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設備上變得不穩定。

相關問題