Condividi tramite


Utilizzo di automazione interfaccia utente per il test automatico

NotaNota

La presente documentazione è destinata agli sviluppatori di .NET Framework che desiderano utilizzare le classi UI Automation gestite definite nello spazio dei nomi System.Windows.Automation.Per informazioni aggiornate sull'UI Automation, vedere Windows Automation API: Automazione interfaccia utente (la pagina potrebbe essere in inglese).

In questi cenni preliminari viene descritta l'utilità di Microsoft UI Automation come framework per l'accesso a livello di codice in scenari di test automatici.

UI Automation fornisce un modello a oggetti unificato che consente a tutti i framework dell'user interface (UI) di esporre funzionalità complesse e dettagliate in modo accessibile e automatico.

UI Automation è stato sviluppato come successore di Microsoft Active Accessibility. Active Accessibility è un framework esistente progettato come soluzione per rendere accessibili controlli e applicazioni. Benché l'automazione dei test non fosse un obiettivo della progettazione di Active Accessibility, la soluzione si è evoluta fino a coprire questo ruolo, dati i requisiti molto simili di accessibilità e automazione. UI Automation, oltre a offrire soluzioni ottimali per l'accessibilità, è progettato appositamente per fornire funzionalità affidabili di test automatici. Ad esempio, Active Accessibility utilizza una sola interfaccia per esporre informazioni sull'interfaccia utente e per raccogliere informazioni necessarie ai prodotti di AT, mentre in UI Automation i due modelli sono separati.

Sono necessari un provider e un client per implementare UI Automation affinché risulti utile come strumento di test automatizzato. I provider di automazione interfaccia utente sono applicazioni come Microsoft Word, Excel e altre applicazioni di terze parti o controlli basati sul sistema operativo Microsoft Windows. I client di automazione interfaccia utente includono script di test automatizzati e applicazioni di Assistive Technology.

NotaNota

Lo scopo di questi cenni preliminari consiste nel presentare le funzionalità di test automatizzati nuove e migliorate disponibili in UI Automation.In questi cenni preliminari non verranno fornite informazioni sulle funzionalità di accessibilità, concetto che verrà trattato solo quando necessario.

Nel presente argomento sono contenute le seguenti sezioni.

  • Automazione interfaccia utente in un provider
  • Automazione interfaccia utente in un client
  • Strumenti e tecnologie correlati
  • Sicurezza
  • Argomenti correlati

Automazione interfaccia utente in un provider

Per automatizzare un'UI, è necessario che lo sviluppatore di un'applicazione o di un controllo esamini quali azioni possono essere eseguite da un utente finale sull'oggetto UI mediante l'interazione di una tastiera e un mouse standard.

Una volta individuate queste azioni chiave, è necessario implementare sul controllo i pattern di controllo di UI Automation corrispondenti, ovvero i pattern di controllo che eseguono il mirroring delle funzionalità e del comportamento dell'elemento dell'UI. Ad esempio, l'interazione dell'utente con un controllo casella combinata (ad esempio la finestra di dialogo di esecuzione) prevede in genere l'espansione e la compressione della casella combinata per nascondere o visualizzare un elenco di elementi, la selezione di un elemento dall'elenco o l'aggiunta di un valore nuovo tramite input della tastiera.

NotaNota

Con altri modelli di accessibilità, è necessario che gli sviluppatori raccolgano le informazioni direttamente da singoli pulsanti, menu o altri controlli.Ogni tipo di controllo, purtroppo, è disponibile in dozzine di variazioni minori.In altre parole, anche se dieci variazioni di un pulsante possono funzionare tutte allo stesso modo ed eseguire la stessa funzione, devono essere trattate come controlli univoci.Non è possibile sapere se tali controlli sono equivalenti a livello funzionale.I pattern di controllo sono stati sviluppati per rappresentare questi comportamenti comuni dei controlli.Per ulteriori informazioni, vedere Cenni preliminari sui pattern di controllo per l'automazione interfaccia utente.

Implementazione di automazione interfaccia utente

Come indicato in precedenza, senza il modello unificato fornito da UI Automation, è necessario che strumenti di test e sviluppatori conoscano le informazioni specifiche del framework per esporre proprietà e comportamenti dei controlli in tale framework. Poiché possono essere presenti più framework di interfaccia utente diversi contemporaneamente nei sistemi operativi Windows, inclusi Win32, Windows Formse Windows Presentation Foundation (WPF), eseguire test su più applicazioni con controlli simili può essere un'attività complessa. Nella tabella seguente, ad esempio, sono indicati i nomi delle proprietà specifiche del framework richieste per recuperare il nome (o il testo) associato a un controllo pulsante e viene riportata la singola proprietà UI Automation equivalente.

Tipo di controllo di automazione interfaccia utente

Framework di interfaccia utente

Proprietà specifica del framework

Proprietà di automazione interfaccia utente

Button

Windows Presentation Foundation

Contenuto

NameProperty

Button

Win32

Didascalia

NameProperty

Image

HTML

alt

NameProperty

I provider di automazione interfaccia utente sono responsabili dell'esecuzione del mapping delle proprietà specifiche del framework dei controlli alle proprietà equivalenti di UI Automation.

Per informazioni sull'implementazione di UI Automation in un provider, vedere Provider di automazione interfaccia utente per il codice gestito. Per informazioni sull'implementazione di pattern di controllo, vedere Pattern di controllo per automazione interfaccia utente e Pattern di testo per l'automazione interfaccia utente.

Automazione interfaccia utente in un client

L'obiettivo di molti strumenti e scenari di test automatizzati è la modifica coerente e ripetibile dell'interfaccia utente, che può comportare controlli specifici di unit test e la registrazione e la riproduzione di script di test che ripetono una serie di azioni generiche su un gruppo di controlli.

Una complicazione legata alle applicazioni automatiche è la difficoltà della sincronizzazione di un test con una destinazione dinamica. Ad esempio, un controllo casella di riepilogo, quale un controllo contenuto in Gestione attività Windows, che visualizza un elenco di applicazioni attualmente in esecuzione. Poiché gli elementi nella casella di riepilogo sono aggiornati dinamicamente all'esterno del controllo dell'applicazione di test, è impossibile tentare di ripetere la selezione di un elemento specifico nella casella di riepilogo in modo coerente. Problemi analoghi possono sorgere anche quando si tenta di ripetere semplici modifiche dello stato attivo in un'UI esterna al controllo dell'applicazione di test.

Accesso a livello di codice

L'accesso a livello di codice consente di imitare, tramite codice, qualsiasi interazione ed esperienza esposta dall'input tradizionale di mouse e tastiera. UI Automation consente l'accesso a livello di codice tramite cinque componenti:

Proprietà chiave per l'automazione di test

La possibilità di identificare in modo univoco e di trovare successivamente qualsiasi controllo all'interno dell'UI è la base per il funzionamento delle applicazioni di test automatizzate su tale UI. Le proprietà di Microsoft UI Automation utilizzate da client e provider utili a questo scopo sono numerose.

AutomationID

Identifica in modo univoco un elemento di automazione da elementi di pari livello. AutomationIdProperty non è localizzato, a differenza di una proprietà come NameProperty, che viene in genere localizzata se un prodotto viene fornito in più lingue. Vedere Utilizzare la proprietà AutomationID.

NotaNota

AutomationIdProperty non garantisce un'identità univoca in tutta la struttura ad albero di automazione.Ad esempio, un'applicazione può contenere un controllo menu con più voci di menu di livello superiore che, a loro volta, contengono più voci di menu figlio.Queste voci di menu secondarie possono essere identificate da uno schema generico, ad esempio "Item1, Item2, Item3 e così via", consentendo identificatori duplicati per i figli tra voci di menu di livello superiore.

ControlType

Identifica il tipo di controllo rappresentato da un elemento di automazione. La conoscenza del tipo di controllo consente di acquisire informazioni significative. Vedere Cenni preliminari sui tipi di controllo per l'automazione interfaccia utente.

NameProperty

Si tratta di una stringa di testo che identifica o spiega un controllo. È necessario utilizzare NameProperty con attenzione in quanto può essere localizzato. Vedere Cenni preliminari sulle proprietà di automazione interfaccia utente.

Implementazione di automazione interfaccia utente in un'applicazione di test

Aggiungere i riferimenti di automazione interfaccia utente.

Le dll di UI Automation necessarie per i client di automazione interfaccia utente sono elencate di seguito.

  • UIAutomationClient.dll consente di accedere alle API di UI Automation sul lato client.

  • UIAutomationClientSideProvider.dll offre la possibilità di automatizzare i controlli Win32. Vedere Supporto per automazione interfaccia utente dei controlli standard.

  • UIAutomationTypes.dll consente di accedere ai tipi specifici definiti in UI Automation.

Aggiungere lo spazio dei nomi System.Windows.Automation.

Questo spazio dei nomi contiene tutti gli elementi necessari ai client di automazione interfaccia utente per utilizzare le funzionalità di UI Automation, tranne la gestione del testo.

Aggiungere lo spazio dei nomi System.Windows.Automation.Text.

Questo spazio dei nomi contiene tutti gli elementi necessari ai client di automazione interfaccia utente per utilizzare le funzionalità di gestione di testo di UI Automation.

Individuare i controlli di interesse.

Gli script di test automatizzati consentono di individuare gli elementi di automazione interfaccia utente che rappresentano controlli di interesse all'interno della struttura ad albero di automazione.

È possibile ottenere elementi di automazione interfaccia utente con il codice in diversi modi.

  • Eseguire una query nell'UI utilizzando un'istruzione Condition. In questo caso viene in genere utilizzato il campo AutomationIdProperty indipendente dalla lingua.

NotaNota
È possibile ottenere un campo AutomationIdProperty utilizzando uno strumento quale UISpy.exe (UI Spy) che è in grado di descrivere in modo dettagliato le proprietà di UI Automation di un controllo.
  • Utilizzare la classe TreeWalker per attraversare l'intera struttura ad albero di UI Automation o un sottoinsieme.

  • Registrare lo stato attivo.

  • Utilizzare l'hWnd del controllo.

  • Utilizzare la posizione sullo schermo, ad esempio la posizione del cursore del mouse.

Vedere Ottenere elementi di automazione interfaccia utente

Ottenere i pattern di controllo.

I pattern di controllo espongono comportamenti comuni per controlli simili a livello funzionale.

Dopo aver individuato i controlli che richiedono test, gli script di test automatizzati ottengono i pattern di controllo di interesse da tali elementi di automazione interfaccia utente. Ad esempio, il pattern di controllo InvokePattern  per la tipica funzionalità di pulsante o il pattern di controllo WindowPattern  per la funzionalità di finestra.

Vedere Cenni preliminari sui pattern di controllo per l'automazione interfaccia utente.

Automatizzare l'interfaccia utente.

È ora possibile utilizzare script di test automatizzati per controllare qualsiasi UI di interesse da un framework dell'UI utilizzando informazioni e funzionalità esposte dai pattern di controllo di UI Automation.

Strumenti e tecnologie correlati

Sono disponibili vari strumenti e tecnologie correlati che supportano i test automatizzati con UI Automation.

  • UISpy.exe (UI Spy) è un'applicazione dell'graphical user interface (GUI) che può essere utilizzata per raccogliere informazioni di UI Automation per lo sviluppo e il debug di provider e client. UI Spy è inclusa in Windows Software Development Kit (SDK).

  • UIAutoCmd è uno strumento da riga di comando con funzionalità simili a UI Spy.

  • MSAABridge espone le informazioni di UI Automation ai client di Active Accessibility. L'obiettivo primario del collegamento di UI Automation ad Active Accessibility è quello di consentire ai client di Active Accessibility esistenti di interagire con qualsiasi framework che implementi UI Automation.

Sicurezza

Per informazioni sulla sicurezza, vedere Cenni preliminari sulla sicurezza di automazione interfaccia utente.

Vedere anche

Altre risorse

Nozioni fondamentali sull'automazione interfaccia utente