Uso dell'automazione interfaccia utente per i test automatizzati
Nota
Questa documentazione è destinata agli sviluppatori .NET Framework che vogliono usare le classi di automazione interfaccia utente gestite definite nello spazio dei nomi System.Windows.Automation. Per le informazioni più recenti sull'automazione interfaccia utente, vedere API di automazione di Windows: Automazione interfaccia utente.
Questa panoramica descrive come l'automazione interfaccia utente Microsoft può essere utile come framework per l'accesso a livello di codice in scenari di test automatizzati.
Automazione interfaccia utente offre un modello a oggetti unificato che consente a tutti i framework dell'interfaccia utente di esporre funzionalità complesse e avanzate in modo accessibile e facilmente automatizzato.
Automazione interfaccia utente è stata sviluppata come successore di Microsoft Active Accessibility. Active Accessibility è un framework esistente progettato per offrire una soluzione per rendere accessibili controlli e applicazioni. L'accessibilità attiva non è stata progettata tenendo conto dell'automazione dei test anche se si è evoluta in tale ruolo a causa dei requisiti molto simili di accessibilità e automazione. L'automazione interfaccia utente, oltre a fornire soluzioni più avanzate per l'accessibilità, è progettata specificamente per offrire funzionalità affidabili per i test automatizzati. Ad esempio, Active Accessibility si basa su una singola interfaccia per esporre informazioni sull'interfaccia utente e raccogliere le informazioni necessarie per i prodotti AT; Automazione interfaccia utente separa i due modelli.
Sia un provider che un client devono implementare Automazione interfaccia utente perché sia utile come strumento di test automatizzato. I provider di automazione interfaccia utente sono applicazioni come Microsoft Word, Excel e altre applicazioni o controlli di terze parti 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 è illustrare le funzionalità di test automatizzate nuove e migliorate di Automazione interfaccia utente. Questa panoramica non è progettata per fornire informazioni sulle funzionalità di accessibilità e non risolverà l'accessibilità diversa dalladdove necessario.
Automazione interfaccia utente in un provider
Affinché un'interfaccia utente sia automatizzata, uno sviluppatore di un'applicazione o di un controllo deve esaminare le azioni che un utente finale può eseguire sull'oggetto dell'interfaccia utente usando l'interazione standard tramite tastiera e mouse.
Dopo aver identificato queste azioni chiave, i modelli di controllo di automazione interfaccia utente corrispondenti (ovvero i pattern di controllo che rispecchiano la funzionalità e il comportamento dell'elemento dell'interfaccia utente) devono essere implementati nel controllo. Ad esempio, l'interazione dell'utente con un controllo casella combinata ,ad esempio la finestra di dialogo di esecuzione, comporta 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 da tastiera.
Nota
Con altri modelli di accessibilità, gli sviluppatori devono raccogliere informazioni direttamente da singoli pulsanti, menu o altri controlli. Purtroppo, ogni tipo di controllo è disponibile in decine di varianti secondarie. In altre parole, anche se dieci varianti di un pushbutton possono funzionare allo stesso modo ed eseguire la stessa funzione, devono tutti essere considerati come controlli univoci. Non c'è modo di sapere che questi controlli sono funzionalmente equivalenti. I pattern di controllo sono stati sviluppati per rappresentare questi comportamenti di controllo comuni. Per altre informazioni, vedere UI Automation Control Patterns Overview.
Implementazione dell'automazione interfaccia utente
Come accennato in precedenza, senza il modello unificato fornito da Automazione interfaccia utente, gli strumenti di test e gli sviluppatori devono conoscere le informazioni specifiche del framework per esporre proprietà e comportamenti dei controlli in tale framework. Poiché possono essere presenti diversi framework di interfaccia utente contemporaneamente nei sistemi operativi Windows, tra cui Win32, Windows Forms e Windows Presentation Foundation (WPF), testare più applicazioni con controlli simili può essere un'attività scoraggiante. La tabella seguente, ad esempio, descrive i nomi di proprietà specifici del framework necessari per recuperare il nome (o il testo) associato a un controllo pulsante e mostra la singola proprietà equivalente di Automazione interfaccia utente.
Tipo di controllo dell'automazione dell'interfaccia utente | Framework dell'interfaccia utente | Proprietà specifica del framework | Ui Automation, proprietà |
---|---|---|---|
Pulsante | Windows Presentation Foundation | Contenuto | ProprietàNome |
Pulsante | Win32 | Didascalia | ProprietàNome |
Immagine | HTML | Alt | NomeProprietà |
I provider di automazione interfaccia utente sono responsabili del mapping delle proprietà specifiche del framework dei relativi controlli alle proprietà equivalenti di automazione interfaccia utente.
Per informazioni su come implementare l'Automazione dell'interfaccia utente nei provider, consultare Provider di automazione dell'interfaccia utente per codice gestito. Le informazioni sull'implementazione dei pattern di controllo sono disponibili in 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 manipolazione coerente e ripetibile dell'interfaccia utente. Ciò può comportare test unitari di controlli specifici fino alla registrazione e riproduzione di script di test che elaborano una serie di azioni generiche su un gruppo di controlli.
Una complicazione che deriva dalle applicazioni automatizzate è la difficoltà di sincronizzare un test con una destinazione dinamica. Ad esempio, un controllo casella di riepilogo, ad esempio quello contenuto in Gestione attività di Windows, che visualizza un elenco di applicazioni attualmente in esecuzione. Poiché gli elementi nella casella di riepilogo vengono aggiornati dinamicamente all'esterno del controllo dell'applicazione di test, il tentativo di ripetere la selezione di un elemento specifico nella casella di riepilogo con qualsiasi coerenza è impossibile. Problemi simili possono verificarsi anche quando si tenta di replicare semplici modifiche dello stato di messa a fuoco in un'interfaccia utente che non è sotto il controllo dell'applicazione di test.
Accesso programmato
L'accesso a livello di codice consente di imitare, tramite codice, qualsiasi interazione ed esperienza esposta dal tradizionale input del mouse e della tastiera. L'Automazione dell'interfaccia utente consente l'accesso a livello di codice tramite cinque componenti.
L'albero di automazione interfaccia utente facilita lo spostamento attraverso la struttura dell'interfaccia utente. L'albero viene costruito a partire dalla collezione degli hWnd. Per ulteriori informazioni, vedere Panoramica dell'albero di automazione UI .
Gli elementi di automazione sono singoli componenti nell'interfaccia utente. Questi possono spesso essere più granulari di un hWnd. Per ulteriori informazioni, vedere Panoramica sui tipi di controllo dell'automazione dell'interfaccia utente .
Le proprietà di automazione forniscono informazioni specifiche sugli elementi dell'interfaccia utente. Per ulteriori dettagli, vedere Panoramica delle proprietà di automazione dell'interfaccia utente.
I pattern di controllo definiscono un particolare aspetto della funzionalità di un controllo; possono essere costituiti da informazioni su 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 ulteriori informazioni, vedere la Panoramica degli eventi di automazione dell'interfaccia utente .
Proprietà chiave per l'automazione dei test
La possibilità di identificare e individuare in modo univoco qualsiasi controllo all'interno dell'interfaccia utente fornisce la base per il funzionamento automatizzato delle applicazioni di test su tale interfaccia utente. Esistono diverse proprietà di Automazione interfaccia utente Microsoft usate dai client e dai provider che supportano questa operazione.
AutomationID
Identifica in modo univoco un elemento di automazione tra i suoi elementi simili. AutomationIdProperty non è localizzato, a differenza di una proprietà come NameProperty che viene in genere localizzata se un prodotto viene spedito in più lingue. Vedere Usare la proprietà AutomationID.
Nota
AutomationIdProperty non garantisce un'identità univoca nell'albero di automazione. Ad esempio, un'applicazione può includere un controllo del menu composto da più elementi di menu di primo livello che, a loro volta, presentano diversi elementi di menu secondari. Queste voci di menu secondarie possono essere identificate da uno schema generico, ad esempio "Item1, Item 2, Item3 e così via", consentendo identificatori duplicati per gli elementi figlio nelle voci di menu di primo livello.
Tipo di Controllo
Identifica il tipo di controllo rappresentato da un elemento di automazione. È possibile dedurre informazioni significative dalla conoscenza del tipo di controllo. Panoramica dei tipi di controllo di automazione dell'interfaccia utente.
ProprietàNome
Si tratta di una stringa di testo che identifica o spiega un controllo. NameProperty deve essere usato con cautela perché può essere localizzato. Consulta la panoramica delle proprietà di automazione dell'interfaccia utente .
Implementazione dell'automazione interfaccia utente in un'applicazione di test
Passo | Descrizione |
---|---|
Aggiungere i riferimenti di UI Automation (automazione interfaccia utente). | La dll di automazione interfaccia utente necessaria per i client di automazione interfaccia utente è elencata qui. - UIAutomationClient.dll fornisce l'accesso alle API lato client di Automazione dell'interfaccia utente. - UIAutomationClientSideProvider.dll offre la possibilità di automatizzare i controlli Win32. Consultare il supporto dell'automazione dell'interfaccia utente per i controlli standard . - UIAutomationTypes.dll fornisce l'accesso ai tipi specifici definiti in Automazione interfaccia utente. |
Aggiungere lo spazio dei nomi System.Windows.Automation. | Questo spazio dei nomi contiene tutto ciò di cui i client di automazione dell'interfaccia utente hanno bisogno per utilizzare le funzionalità di Automazione interfaccia utente, ad eccezione della gestione del testo. |
Aggiungere lo spazio dei nomi System.Windows.Automation.Text. | Questo spazio dei nomi contiene tutti gli elementi di cui i clienti di automazione dell'interfaccia utente hanno bisogno per utilizzare le capacità di gestione del testo dell'automazione dell'interfaccia utente. |
Trova i controlli di interesse. | Gli script di test automatizzati individuano gli elementi di automazione interfaccia utente che rappresentano i controlli di interesse all'interno dell'albero di automazione. Esistono diversi modi per ottenere elementi di automazione interfaccia utente con codice. - Eseguire una query sull'interfaccia utente usando un'istruzione Condition. Questo è in genere il punto in cui viene usato il AutomationIdProperty indipendente dalla lingua. Nota: È possibile ottenere un AutomationIdProperty usando uno strumento come Inspect.exe in grado di elencare le proprietà dell'automazione dell'interfaccia utente di un controllo. - Usare la classe TreeWalker per attraversare l'intero albero di automazione interfaccia utente o un sottoinsieme. - Seguire il focus. - Usare l'hWnd del controllo. - Usare la posizione dello schermo, ad esempio la posizione del cursore del mouse. Consultare ottenere elementi di automazione dell'interfaccia utente |
Ottenere modelli 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 modelli di controllo di interesse da tali elementi di automazione interfaccia utente. Ad esempio, il pattern di controllo InvokePattern per la funzionalità dei pulsanti tipica o il pattern di controllo WindowPattern per la funzionalità della finestra. Visualizza la panoramica dei modelli di controllo di Automazione interfaccia utente . |
Automatizzare l'interfaccia utente. | Gli script di test automatizzati possono ora controllare qualsiasi interfaccia utente di interesse da un framework dell'interfaccia utente usando le informazioni e le funzionalità esposte dai modelli di controllo di automazione interfaccia utente. |
Strumenti e tecnologie correlati
Esistono diversi strumenti e tecnologie correlati che supportano test automatizzati con automazione interfaccia utente.
Inspect.exe è un'applicazione grafica dell'interfaccia utente (GUI) che può essere usata per raccogliere informazioni di automazione interfaccia utente sia per lo sviluppo del provider che per il debug dei client. 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 l'accessibilità attiva è consentire ai client active accessibility esistenti di interagire con qualsiasi framework che ha implementato automazione interfaccia utente.
Sicurezza
Per informazioni sulla sicurezza, vedere Panoramica sulla sicurezza dell'automazione dell'interfaccia utente.