2012-01-05 18 views
6

Ho un campo di ricerca nella mia app e ho impostato il tipo di chiave di ritorno della tastiera per questo campo su UIReturnKeyNext. Sto tentando di scrivere un test UIAutomation che fa clic sul pulsante Avanti sulla tastiera utilizzando la seguente riga:Facendo clic sulla tastiera "Avanti" utilizzando UIAutomation

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().keys().firstWithName("next"); 

Questa chiamata non riesce perché la chiave con il nome 'prossimo' è non essere trovata. Ho fatto un dump di tutti gli elementi nella mia app utilizzando:

UIATarget.localTarget().frontMostApp().logElementTree(); 

Questo rivela che c'è davvero un tasto nella tastiera con il nome di 'prossimo', ma in qualche modo il mio tentativo di recuperare come esposizione qui sopra ancora non riesce. Posso comunque recuperare altre chiavi (come la chiave per la lettera 'u') usando questo metodo. C'è un problema noto qui o sto facendo qualcosa di sbagliato?

Ho provato altre varianti senza fortuna:

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().elements()["next"]; 

Ecco una cattura dello schermo degli elementi in mio UIAKeyboard:

return key dump

risposta

1

le seguenti opere per me:

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().buttons().firstWi‌​thPredicate("name contains[c] 'next'"); 
2

ho Dont't avere un esempio per test, ma come il pulsante "Avanti" è un UIAButton, e non un UIAKey si potrebbe provare:

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().buttons()["next"]; 

Se non funziona, si può anche provare

UIATarget.localTarget().frontMostApp().mainWindow().keyboard().buttons()[4]; 
+0

Ho provato entrambi e non ho avuto fortuna. Grazie per i suggerimenti però. – kodie

+0

Julien, la tua risposta mi ha spinto a giocare di nuovo con questo, e l'uso della funzione buttons() ha portato a una soluzione operativa. Ecco cosa funziona per me: UIATarget.localTarget(). FrontMostApp(). MainWindow(). Keyboard(). Buttons(). FirstWithPredicate ("name contains [c] 'next'"); Mi sembra che i pulsanti() ["prossimo"] avrebbero dovuto funzionare e non so perché non l'ha fatto, ma quanto sopra funziona. Grazie per il suggerimento. – kodie

2

Se si vuole solo clic su di esso, e si conosce la tastiera ha "next" come "tasto Invio" (definito nel pennino), quindi è possibile utilizzare questo:

app.keyboard().typeString("\n"); 
0

Per me, la tastiera non rientra sotto MainWindow() nella Gerarchia. È allo stesso livello di mainWindow() quando logElementTree() dal livello superiore. Quindi, ciò che si vuole fare è:

UIATarget.localTarget().frontMostApp().keyboard().buttons()["next"]; 

questo ha lavorato per me quando stavo cercando di premere il pulsante "Cerca" sulla tastiera.

Problemi correlati