Utilizzo di automazione interfaccia utente per il test automatico
![]() |
---|
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.
![]() |
---|
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.
![]() |
---|
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:
La struttura ad albero di UI Automation facilita la navigazione nella struttura dell'UI. La struttura ad albero è compilata dall'insieme di hWnd. Per ulteriori informazioni, vedere Cenni preliminari sulla struttura ad albero di automazione dell'interfaccia utente.
Gli elementi di automazione sono singoli componenti dell'UI. e sono spesso più granulari di un hWnd. Per ulteriori informazioni, vedere Cenni preliminari sui tipi di controllo per l'automazione interfaccia utente.
Le proprietà di automazione forniscono informazioni specifiche sugli elementi dell'UI. Per ulteriori informazioni, vedere Cenni preliminari sulle proprietà di automazione interfaccia utente.
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 ulteriori informazioni, vedere Cenni preliminari sui pattern di controllo per l'automazione interfaccia utente.
Gli eventi di automazione forniscono notifiche e informazioni sugli eventi. Per ulteriori informazioni, vedere Cenni preliminari sugli eventi di automazione interfaccia utente.
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.
![]() |
---|
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.
|
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.
![]()
È 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.
|
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.