5

Stavo cercando molto su google per trovare una soluzione ai miei problemi con UI Automation. Invece trovo post che bel riassunto di loro:come posso migliorare l'automazione dell'interfaccia utente di iPhone?

Non c'è modo per eseguire i test dalla linea di comando (...)

Non c'è modo per impostare o reimpostare lo stato.. (...)

Parte del problema precedente è che UI Automation non ha alcun concetto di test discreti. (...)

Non c'è modo di recuperare a livello di codice i risultati dell'esecuzione di test. (...)

fonte: http://pivotallabs.com/users/amilligan/blog/articles/1323-iphone-ui-automation-tests-a-decent-start

Problema n. 3 può essere risolto con jasmine (https://github.com/pivotal/jasmine-iphone)

come su altri problemi? Sono stati introdotti miglioramenti da quel post (20 luglio 2010)?

E un altro problema è vero che solo un metodo esistente per la selezione di un particolare elemento dell'interfaccia utente sta aggiungendo un'etichetta di accessibilità nel codice sorgente dell'applicazione?

risposta

5

Mentre l'automazione dell'interfaccia utente è migliorata da quando è stato creato quel post, i miglioramenti che ho visto sono stati tutti correlati all'affidabilità piuttosto che alle nuove funzionalità.

Raccoglie punti positivi su alcuni dei problemi con l'utilizzo di UI Automation per test più seri. Se leggi i commenti più tardi, c'è una quantità significativa di discussioni sui modi per risolvere questi problemi.

L'argomento dell'esecuzione di test dalla riga di comando è discusso in this question, dove viene suggerita una soluzione potenziale a in the Apple Developer Forums. Non ci ho provato da solo.

È possibile esportare i risultati di un test dopo l'esecuzione, che è possibile analizzare offline.

Infine, per quanto riguarda la tua ultima domanda, puoi indirizzare gli elementi dell'interfaccia utente senza assegnare loro un'etichetta di accessibilità. Molti controlli comuni di UIKit sono accessibili per impostazione predefinita, quindi puoi già targetizzarli per nome. In caso contrario, è possibile scegliere il punto di vista dalla loro posizione nella gerarchia di visualizzazione, come nel seguente esempio:

var tableView = mainWindow.tableViews()[0]; 

Come sempre, se c'è qualcosa che manca dallo strumento di automazione interfaccia utente che è importante per voi, file an enhancement request in modo che potrebbe trovare la sua strada nella prossima versione dell'SDK.

+0

Grazie mille per una risposta dettagliata. Leggerò le pagine a cui ti riferisci in seguito, ma dopo un rapido sguardo penso che potrebbero aiutarmi. Per quanto riguarda i "test seri", questo è il mio caso, poiché ho intenzione di integrare questo processo con il mio server CI. –

+1

Scusa, ma l'integrazione degli strumenti in CI sarà un rompicapo. Attualmente sto usando Sikuli (sikuli.org) per incidere su problemi che stai indicando, ma ancora non lo metterei in CI. Per CI vorrei utilizzare questo approccio http://cocoawithlove.com/2009/12/sample-iphone-application-with-completo.html – yoosiba

+0

yoosiba: Preferisci davvero utilizzare un approccio generico come Sikuli? Come compareresti gli sforzi temporali nella scrittura di casi standard di test GUI per UIAutomation e Sikuli? –

0

Prova a controllare la gerarchia degli elementi, la tabella può essere posizionata su un UIScrollView.

var tableV = mainWindowTarget.scrollViews()[0].tableViews()[0].scrollToElementWithName("Name of element inside the cell"); 

lo script precedente funziona anche l'elemento si trova nella cella 12 (ma il nome dovrebbe essere esattamente lo stesso come detto all'interno della cellula)

0

Partenza http://lemonjar.com/blog/?p=69 Si parla di come eseguire UIA da la riga di comando

+1

Welcome to Stack Overflow! Mentre questo può teoricamente rispondere alla domanda, [sarebbe preferibile] (http://meta.stackexchange.com/q/8259) includere qui le parti essenziali della risposta e fornire il link per riferimento. – Kev

+0

d'accordo con Kev. ma è una buona notizia che il nuovo sdk abbia finalmente il supporto per cmd. grazie per le buone notizie! –

3

Hai provato IMAT? https://code.intuit.com/sf/sfmain/do/viewProject/projects.ginsu.Utilizza il javascript sdk nativo fornito da Apple e può essere attivato tramite riga di comando o strumenti.

In risposta a ciascuna delle vostre domande:

Non c'è modo per eseguire i test dalla linea di comando (...)

Apple ora offre questo.. Con IMAT, puoi avviare i test tramite riga di comando o tramite strumenti. Prima che Apple fornisse l'interfaccia a riga di comando, stavamo usando AppleScript per richiamare gli strumenti e poi dare il via ai test - brutto.

Non c'è modo di impostare o ripristinare lo stato. (...)

Dai un'occhiata a questo diagramma di stato: https://code.intuit.com/sf/wiki/do/viewPage/projects.ginsu/wiki/RecoveringFromTestFailures

Parte del problema è che la precedente UI Automation ha il concetto di test discreti. (...)

concordato. Sia IMAT che tuneup.js (https://github.com/alexvollmer/tuneup_js#readme) lo consentono.

Non c'è modo di recuperare a livello di codice i risultati dell'esecuzione di prova. (...)

Leggere il file plist di trascinamento non è banale. IMAT fornisce un report simile a jUnit dopo un test eseguito leggendo il file plist e questo viene raccolto dal mio strumento CI (Teamcity, Jenkins, CruiseControl)

+0

C'è un collegamento a questo ancora disponibile sulla mia pagina githhub. https://github.com/rdpfeffer/IMAT –

+1

btw, sarebbe bello se si potesse accettare una delle risposte qui ;-) @sogwiz sembra aver risposto a tutte le vostre preoccupazioni. –

Problemi correlati