2012-07-08 90 views
9

我們有一個包含兩列新聞閱讀器的iPad應用程序。左視圖包含新聞列表,其中一些鏈接直接與新聞相關聯,另一些則將另一個視圖控制器與另一個新聞列表鏈接。這也會導致UIButton被設置爲導航欄的leftBarButtonItem。如果我們處於第一級別,則無法使用的簡單圖像將是leftBarButtonItemUIAutomation:在點擊前檢查元素是否存在

我的目標是現在有一個測試,在每個新聞的水平。如果一條消息通向二級列表,則應該點擊導航欄中的UIButton

我該如何檢查,如果leftBarButtonItem是「可點擊」?由於它可以是圖像,只要調用navigationBar().leftButton().tap()就會導致錯誤,如果它是圖像。

我也使用tuneup庫,如果這是任何幫助。

回答

17

幾乎UIAutomation中的所有元素都可以被挖掘。無論它是圖像,視圖還是按鈕都無關緊要。萬一您嘗試點擊的對象無效,您將收到錯誤提示。 如何檢查:

if (navigationBar().leftButton().checkIsValid()) 
{ 
    navigationBar().leftButton().tap(); 
} 
else 
{ 
    //do what you need. 
} 

,或者你可以檢查,如果你想挖掘的對象是一個按鈕,例如(不是最好的方式,但它的工作原理):

if (navigationBar().leftButton().toString() == "[object UIAButton]") 
{ 
    navigationBar().leftButton().tap(); 
} 
else 
{ 
    //do what you need. 
} 

checkIsValid( )適用於所有UI元素。如果有對象存在,它將返回true的toString()將返回[對象UIAElementNil]如果元件是無效或將返回[對象UIAButton][對象UIAImage]

也可以嘗試使用蘋果的文檔: http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html

0

您可以簡單地使用

if (navigationBar().leftButton().exists) 
{ 
    navigationBar().leftButton().tap(); 
} 
else 
{ 
    //do what you need. 
}