2010-07-06 88 views
0

我正在探索iphoneOS 4.0中新近公開的框架UI自動化。有沒有人使用這個框架測試他們的應用程序。我會感謝任何幫助。用於iPhone的UI自動化框架

我想測試一個示例應用程序,只包含一個文本框和一個按鈕。我寫了一個腳本爲

 

UIALogger.logStart("Starting Test"); 

var view = UIATarget.localTarget().frontMostApp().mainWindow().elements()[0]; 
var textfields = view.textFields(); 
if (textfields.length != 1) { 
    UIALogger.logFail("Wrong number of text fields"); 
} else { 
    UIALogger.logPass("Right number of text fields"); 
} 

textfields[0].setValue("anurag"); 

view.buttons()[0].tap(); 
 

問題是沒有設置textfield的值,也沒有點擊按鈕。當我運行儀器時,只有視圖(帶有文本框和按鈕)出現,然後注意到正在發生。

樂器中有一則訊息「發生了其他事情」。

回答

4

如果您的主窗口包含一個按鈕和一個文本字段(按照層次結構中的順序),那麼您的第一行代碼將返回給您UIAButton元素,因此下一行不正確,因爲您試圖調用一個按鈕上的textFields()。

,第一部分應該是這樣的:

var view = UIATarget.localTarget().frontMostApp().mainWindow(); 
var textfields = view.textFields(); 
if (textfields.length != 1) { 
    UIALogger.logFail("Wrong number of text fields"); 
} else { 
    UIALogger.logPass("Right number of text fields"); 
} 

而且在這種情況下,我覺得有測試水龍頭和文本字段的方法有兩種。就像這樣:

textfields[0].setValue("anurag"); 
view.buttons()[0].tap(); 

或像這樣:

view.elements()[1].setValue("anurag"); 
view.elements()[0].tap(); 

而我個人更喜歡使用輔助標籤而不是索引獲取對象。欲瞭解更多信息,尋找一個UIAElement類參考這裏看看: UI Automation Reference Collection

-2

所有這些東西是要去工作,只有在應用程序與可訪問性的東西(它自己的輔助協議提出:通過標記所有UI通過將Accessability標籤設置爲視圖的唯一值來控制Interface Builder中的名稱)。或者如果你使用iPhone標準控件。

如果應用程序不包含任何類似的內容,那麼您將無法使用UI Automation做很多事情,並且只會看到320x480的空畫布。

您可以查看此link瞭解更多詳情。

例如,我工作的OpenGL應用程序未使用任何輔助功能標記構建,除了320x480空格式外,我無法通過UI自動查看任何內容。

+2

這實際上並非如此。可訪問性標籤對於使用UI自動化不是必需的。設置輔助功能標籤允許爲UI自動化編寫的腳本更易於閱讀和維護。您可以調用target.frontMostApp()。mainWindow()。elements()[「Login Button」]來代替調用target.frontMostApp()。mainWindow()。elements()[0]。使用標籤很好,但不是必需的。 – Yetti 2012-08-16 15:19:24