2015-05-19 5 views
8

Sto utilizzando Xamarin.UITest per eseguire l'automazione sull'app iOS.Come toccare il pulsante OK nella finestra di dialogo delle autorizzazioni necessaria per accedere alle foto su iOS utilizzando Xamarin.UITest?

Il problema è che: mentre si accede alla galleria per caricare una foto, c'è una finestra di dialogo delle autorizzazioni e devo toccare il pulsante "OK" per chiuderla.

I seguenti modi che ho provato, ma non ha funzionato:

  • Utilizzando il comando albero non mostra gerarchia di dialogo, in modo che io non riesco a individuare elemento dell'interfaccia utente per automatizzare

  • Utilizzando iOSApp.InvokeUia("UIATarget.localTarget().frontMostApp().alert().buttons()[\"OK\"].tap()"); Questo errore mostrato: UIATarget.localTarget().frontMostApp().alert().buttons()["OK"] could not be tapped because the element is not visible [email protected][native code]

  • Utilizzando app.TapCoordinate, sembra che sia in grado di funzionare, ma è necessario conoscere le coordinate corrette in base alle diverse schermate e quando appare la finestra di dialogo.

Esistono soluzioni per risolvere questo problema? Grazie.

risposta

2

provare questo:.. target.frontMostApp() MainWindow() elementi() [0] .elements() [2] .elements() [1] .tap()

4

finestre di dialogo di sistema per i permessi sono al di fuori dell'ambito dell'applicazione e non verranno visualizzati in tree o qualsiasi altra query che è possibile eseguire tramite UITest. Invece, questi sono in genere gestiti automaticamente da calabash. Il comportamento "automatico" è accettare qualsiasi finestra di dialogo di autorizzazione visualizzata.

La finestra di dialogo è in una lingua diversa in cui "OK" potrebbe essere visualizzato in una lingua diversa dall'inglese? In tal caso, potrebbe essere necessario archiviare un problema per quella specifica localizzazione in modo che possa essere implementata.

Inoltre, assicurarsi di disporre della versione più recente di UITest. Dai un'occhiata alle modifiche per iOS 10 e InvokeUia here.

+1

Questa è la domanda corretta. Tuttavia, quando si utilizza il Registratore di test, non chiude automaticamente la finestra di dialogo. L'OK automatico significa anche che non è possibile eseguire test dell'interfaccia utente per i casi in cui l'utente rifiuta l'autorizzazione. – Cheesebaron

+1

Punto interessante su XTR, lo seguirò. Si potrebbe prendere in considerazione l'utilizzo di una tecnica "backdoor" per percorsi diversi che non si basano su autorizzazioni effettivamente accettabili in modo da poter suddividere i comportamenti che si desidera testare. https://developer.xamarin.com/guides/testcloud/uitest/working-with/backdoors/ – therealjohn

+0

Solo un aggiornamento di questa discussione. La nuova versione di Xamarin Test Recorder in realtà elimina automaticamente l'autorizzazione. @PhucThai dovrebbe probabilmente accettare questa risposta in quanto è la più corretta. – Cheesebaron

0

Se si utilizza Repl(); nel tuo codice puoi provare a ottenere il segno per il pulsante OK con il comando tree.

Se si utilizza Visual Studio Entrerprise Edition è possibile rendere i test molto più semplici utilizzando Xamarin Test Recorder, funziona in modo fantastico!

Un'altra cosa da notare è che i test dell'interfaccia utente sono di solito realizzati per schermate e convalide del layout dello schermo, la funzionalità del vostro dovrebbe essere testata con un altro tipo di test con un altro framework o toolkit.

+1

Questo non funziona. Il pulsante OK non si trova nella struttura ad albero per l'applicazione poiché viene avviato dal sistema operativo e non dall'app. – Cheesebaron

Problemi correlati