2012-03-26 8 views
0

我是javascript新手。我在iOS應用中有一堆按鈕。其中一些人的名字中有字母;其他人只是用數字命名。我正在嘗試編寫一個UI測試腳本。在腳本中,我有一個名爲buttons的數組,它表示與UIButton對應的UIAElement對象數組。Javascript自動類型轉換在我的iPhone自動生成器腳本中導致問題

如果我這樣做,它的偉大工程:

buttons["clr"].tap(); 

我想這與挖掘標題爲「CLR」按鈕,它的作用。

但我找不到任何方法來點擊標題爲「2」的按鈕。如果我這樣做,它不表現對我來說:

buttons["2"].tap(); 

什麼情況是,一些片系統的決定在陣列中的索引2至輕點按鈕。這不同於名稱爲2的按鈕。

任何人都可以解釋嗎?有沒有辦法強制它將我的字符串視爲字符串?我嘗試了幾個變體,但他們都沒有幫助,例如

buttons[String(2)].tap(); 

編輯:命名它除2之外的東西將是可能的,但尷尬。該應用程序是一個計算器,2似乎是正確的名稱爲關鍵,就是這樣做。這些名稱用於向殘疾人士展示應用程序。我不知道所有的細節,但是從長遠來看,「2」可能比「兩個」更好。

在回答關於我如何填充我的數組的問題,它是通過Apple's UIAElement class。具體而言,我有一個對象的窗口,這也是一個UIAElement,我通過

var buttons=window.buttons(); 
+1

JavaScript數組索引* *是字符串。除了'2'之外,你還能說出你的元素嗎? – alex 2012-03-26 23:52:23

+0

你如何填充你的數組? – 2012-03-26 23:53:27

回答

1

下面的代碼解決我的問題來填充它。但我仍然對基礎語言問題感興趣。

var twoButton = buttons.firstWithPredicate("name=='2'"); 
1

您應該使用「純」對象,而不是陣列:

var buttons = {}; 

您然後讀取並使用相同的方括號語法作爲用於陣列寫性能:

buttons["2"] 

JavaScript數組是一種特殊類型的對象,將視數字索引(甚至當你試圖將其指定爲一個字符串)不同的。

閱讀下面的更多信息: