Condividi tramite


Utilizzo di automazione interfaccia utente per il test automatico

Nota

Questa documentazione è destinata agli sviluppatori .NET Framework che desiderano utilizzare le classi di UI Automation gestite definite nello spazio dei nomi System.Windows.Automation. Per informazioni aggiornate su UI Automation, vedere API di automazione di Windows: UI Automation.

In questa panoramica viene descritta l'utilità di Automazione interfaccia utente Microsoft come framework per l'accesso a livello di codice in scenari di test automatici.

Automazione interfaccia utente fornisce un modello a oggetti unificato che consente a tutti i framework dell'interfaccia utente di esporre funzionalità complesse e dettagliate in modo accessibile e automatico.

Automazione interfaccia utente è 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. Automazione interfaccia utente, oltre a offrire soluzioni ottimali per l'accessibilità, è progettato appositamente per fornire funzionalità affidabili di test automatici. Ad esempio, Active Accessibility usa una sola interfaccia per esporre informazioni sull'interfaccia utente e per raccogliere informazioni necessarie ai prodotti di assistive technology, mentre in Automazione interfaccia utente i due modelli sono separati.

Sono necessari un provider e un client per implementare Automazione interfaccia utente 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.

Nota

Lo scopo di questa panoramica consiste nel presentare le funzionalità di test automatizzati nuove e migliorate disponibili in Automazione interfaccia utente. In questa panoramica non verranno fornite informazioni sulle funzionalità di accessibilità, concetto che verrà trattato solo quando necessario.

Automazione interfaccia utente in un provider

Per automatizzare un'interfaccia utente, è necessario che lo sviluppatore di un'applicazione o di un controllo esamini quali azioni possono essere eseguite da un utente finale sull'oggetto di interfaccia utente 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 Automazione interfaccia utente corrispondenti, ovvero i pattern di controllo che riflettono le funzionalità e il comportamento dell'elemento dell'interfaccia utente. Ad esempio, l'interazione dell'utente con un controllo casella combinata (ad esempio, la finestra di dialogo Esegui) 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 nuovo valore tramite input della tastiera.

Nota

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 decine di varianti minori. In altre parole, anche se dieci varianti 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 altre informazioni, vedere UI Automation Control Patterns Overview.

Implementazione di automazione interfaccia utente

Come indicato in precedenza, senza il modello unificato fornito da Automazione interfaccia utente, è 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 Forms e 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à Automazione interfaccia utente equivalente.

Tipo di controllo di automazione interfaccia utente Framework di interfaccia utente Proprietà specifica del framework Proprietà di automazione interfaccia utente
Pulsante Windows Presentation Foundation Sommario NameProperty
Pulsante App Win32 Caption 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 Automazione interfaccia utente.

Per informazioni sull'implementazione di Automazione interfaccia utente in un provider, vedere Provider di Automazione interfaccia utente per il codice gestito. Per informazioni sull'implementazione di pattern di controllo, vedere UI Automation Control Patterns e UI Automation Text Pattern.

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'interfaccia utente 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. Automazione interfaccia utente consente l'accesso a livello di codice tramite cinque componenti:

  • L'albero di Automazione interfaccia utente facilita la navigazione nella struttura dell'interfaccia utente. L'albero è compilato dalla raccolta di hWnd. Per altre informazioni, vedere UI Automation Tree Overview.

  • Gli elementi di automazione sono singoli componenti dell'interfaccia utente. e sono spesso più granulari di un hWnd. Per altre informazioni, vedere UI Automation Control Types Overview.

  • Le proprietà di automazione forniscono informazioni specifiche sugli elementi dell'interfaccia utente. Per altre informazioni, vedere UI Automation Properties Overview.

  • I pattern di controllo definiscono un determinato aspetto della funzionalità di un controllo e possono essere costituiti da informazioni di proprietà, metodo, evento e struttura. Per altre informazioni, vedere UI Automation Control Patterns Overview.

  • Gli eventi di automazione forniscono notifiche e informazioni sugli eventi. Per altre informazioni, vedere UI Automation Events Overview.

Proprietà chiave per l'automazione di test

La possibilità di identificare in modo univoco e di trovare successivamente qualsiasi controllo all'interno dell'interfaccia utente è la base per il funzionamento delle applicazioni di test automatizzate su tale interfaccia utente. Le proprietà di Automazione interfaccia utente Microsoft usate 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 in genere è localizzata se un prodotto viene fornito in più lingue. Vedere Use the AutomationID Property.

Nota

AutomationIdProperty non garantisce un'identità univoca in tutto l'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 UI Automation Control Types Overview.

NameProperty

Si tratta di una stringa di testo che identifica o spiega un controllo. È necessario usareNameProperty con attenzione in quanto può essere localizzato. Vedere UI Automation Properties Overview.

Implementazione di automazione interfaccia utente in un'applicazione di test

Procedi Descrizione
Aggiungere i riferimenti di automazione interfaccia utente. Le DLL di Automazione interfaccia utente necessarie per i client di automazione interfaccia utente sono elencate di seguito.

- UIAutomationClient.dll consente di accedere alle API di Automazione interfaccia utente sul lato client.
- UIAutomationClientSideProvider.dll offre la possibilità di automatizzare i controlli Win32. Vedere UI Automation Support for Standard Controls.
- UIAutomationTypes.dll consente di accedere ai tipi specifici definiti in Automazione interfaccia utente.
Aggiungere lo spazio dei nomi System.Windows.Automation . Questo spazio dei nomi contiene tutti gli elementi necessari ai client di automazione interfaccia utente per usare le funzionalità di Automazione interfaccia utente, 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 usare le funzionalità di gestione di testo di Automazione interfaccia utente.
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 dell'albero di automazione.

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

- Eseguire una query nell'interfaccia utente usando un'istruzione Condition. In questo caso, viene in genere usato il campo AutomationIdProperty indipendente dalla lingua. Nota: un AutomationIdProperty può essere ottenuto usando uno strumento quale Inspect.exe, in grado di descrivere in dettaglio le proprietà di un controllo.

- Usare la classe TreeWalker per attraversare l'intero albero di Automazione interfaccia utente o un subset.
- Registrare lo stato attivo.
- Usare l'hWnd del controllo.
- Usare la posizione sullo schermo, ad esempio la posizione del cursore del mouse.

Vedere Obtaining UI Automation Elements
Ottenere i criteri 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 UI Automation Control Patterns Overview.
Automatizzare l'interfaccia utente. È ora possibile usare script di test automatizzati per controllare qualsiasi interfaccia utente di interesse da un framework dell'interfaccia utente usando informazioni e funzionalità esposte dai pattern di controllo di Automazione interfaccia utente.

Sono disponibili vari strumenti e tecnologie correlati che supportano i test automatizzati con Automazione interfaccia utente.

  • Inspect.exe è un'applicazione dell'interfaccia utente grafica (GUI) che può essere usata per raccogliere le informazioni di Automazione interfaccia utente sia per il provider che per lo sviluppo client e il debug. Inspect.exe è incluso in Windows SDK.

  • MSAABridge espone le informazioni di Automazione interfaccia utente ai client Active Accessibility. L'obiettivo principale dell'Automazione interfaccia utente per Active Accessibility è consentire ai client Active Accessibility esistenti di interagire con qualsiasi framework che abbia implementato Automazione interfaccia utente.

Sicurezza

Per informazioni sulla sicurezza, vedere UI Automation Security Overview.

Vedi anche