2012-07-08 7 views
9

Abbiamo un'app per iPad che include un lettore di notizie a due colonne. La vista a sinistra contiene l'elenco delle notizie di cui alcuni collegano direttamente a una notizia e alcuni spingono un altro controller di visualizzazione con un'altra lista di notizie. Ciò causerà anche l'impostazione di UIButton come leftBarButtonItem della barra di navigazione. Se siamo al primo livello, un'immagine semplice che non può essere toccata sarà la leftBarButtonItem.UIAutomation: verificare se l'elemento esiste prima di toccare

Il mio obiettivo è ora di avere un test che tocchi tutte le notizie al primo livello. Se una notizia porta a un elenco di secondo livello, tocca lo UIButton nella barra di navigazione.

Come posso verificare se lo leftBarButtonItem è "intercettabile"? Dal momento che può essere sia un'immagine o un pulsante, solo chiamando navigationBar().leftButton().tap() si verificherà un errore se si tratta di un'immagine.

Sto anche usando la libreria tuneup se questo è un aiuto.

risposta

17

È possibile toccare quasi tutti gli elementi in UIAutomation. Non importa se si tratta di un'immagine, di una vista o di un pulsante. Si verificherà un errore nel caso in cui un oggetto che si sta tentando di toccare non sia valido. Come controllare:

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

oppure è possibile controllare se un oggetto si sta cercando di toccare un pulsante, ad esempio (non il modo migliore ma funziona):

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

checkIsValid () è disponibile per tutti gli elementi dell'interfaccia utente. Restituirà true se esiste un oggetto. toString() restituirà [oggetto UIAElementNil] se l'elemento è valido o tornerà [oggetto UIAButton] o [oggetto UIAImage].

Anche provare a utilizzare la documentazione di Apple: http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html

0

Si può semplicemente utilizzare

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