Dela via


Använda UI Automation för automatiserad testning

Not

Den här dokumentationen är avsedd för .NET Framework-utvecklare som vill använda de hanterade UI Automation-klasserna som definierats i System.Windows.Automation namnrymd. Den senaste informationen om UI Automation finns i Windows Automation API: UI Automation.

Den här översikten beskriver hur Microsoft UI Automation kan vara användbart som ett ramverk för programmatisk åtkomst i automatiserade testscenarier.

UI Automation tillhandahåller en enhetlig objektmodell som gör att alla användargränssnittsramverk (UI) kan exponera komplexa och omfattande funktioner på ett tillgängligt och enkelt automatiserat sätt.

UI Automation utvecklades som en efterföljare till Microsoft Active Accessibility. Aktiv tillgänglighet är ett befintligt ramverk som är utformat för att tillhandahålla en lösning för att göra kontroller och program tillgängliga. Aktiv tillgänglighet utformades inte med testautomation i åtanke trots att den utvecklades till den rollen på grund av de mycket liknande kraven på tillgänglighet och automatisering. UI Automation, förutom att tillhandahålla mer förfinade lösningar för tillgänglighet, är också särskilt utformat för att ge robusta funktioner för automatiserad testning. Till exempel förlitar sig Active Accessibility på ett enda gränssnitt för att både exponera information om användargränssnittet och samla in den information som behövs av AT-produkter. UI Automation separerar de två modellerna.

Både en leverantör och klient krävs för att implementera UI Automation för att det ska vara användbart som ett automatiserat testverktyg. Leverantörer av användargränssnittsautomatisering är program som Microsoft Word, Excel och andra program eller kontroller från tredje part baserat på Microsoft Windows-operativsystemet. UI Automation-klienter inkluderar automatiserade testskript och hjälpmedelsteknikprogram.

Not

Avsikten med den här översikten är att visa upp de nya och förbättrade automatiserade testfunktionerna i UI Automation. Den här översikten är inte avsedd att ge information om hjälpmedelsfunktioner och kommer inte att hantera andra hjälpmedel än vid behov.

UI Automation i en leverantör

För att ett användargränssnitt ska automatiseras måste en utvecklare av ett program eller en kontroll titta på vilka åtgärder en slutanvändare kan utföra på användargränssnittsobjektet med hjälp av standardinteraktion med tangentbord och mus.

När de här nyckelåtgärderna har identifierats bör motsvarande UI Automation-kontrollmönster (dvs. kontrollmönstren som speglar funktionaliteten och beteendet för användargränssnittselementet) implementeras på kontrollen. Till exempel innebär användarinteraktion med en kombinationsrutekontroll (till exempel körningsdialogrutan) vanligtvis att expandera och komprimera kombinationsrutan för att dölja eller visa en lista med objekt, välja ett objekt från listan eller lägga till ett nytt värde via tangentbordsindata.

Not

Med andra hjälpmedelsmodeller måste utvecklare samla in information direkt från enskilda knappar, menyer eller andra kontroller. Tyvärr finns varje kontrolltyp i dussintals mindre varianter. Med andra ord, även om tio varianter av en push-knapp kan fungera på samma sätt och utföra samma funktion, måste de alla behandlas som unika kontroller. Det finns inget sätt att veta att dessa kontroller är funktionellt likvärdiga. Kontrollmönster har utvecklats för att representera dessa vanliga kontrollbeteenden. Mer information finns i UI Automation Control Patterns Overview.

Implementera UI Automation

Som tidigare nämnts, utan den enhetliga modellen som tillhandahålls av UI Automation, måste testverktyg och utvecklare känna till ramverksspecifik information för att exponera egenskaper och beteenden för kontroller i det ramverket. Eftersom det kan finnas flera olika gränssnittsramverk som finns samtidigt i Windows-operativsystem, inklusive Win32, Windows Forms och Windows Presentation Foundation (WPF), kan det vara en skrämmande uppgift att testa flera program med kontroller som verkar liknande. I följande tabell beskrivs till exempel de ramverksspecifika egenskapsnamn som krävs för att hämta namnet (eller texten) som är associerat med en knappkontroll och visar den enda motsvarande UI Automation-egenskapen.

Kontrolltyp för användargränssnittsautomatisering Användargränssnittssramverk Specifik egenskap för ramverk UI Automation-egenskap
Knapp Windows Presentation Foundation Innehåll NamnEgenskap
Knapp Win32 Bildtext NameProperty
Bild HTML Alt NamnEgenskap

UI Automation-leverantörer ansvarar för att mappa de ramverksspecifika egenskaperna för sina kontroller till motsvarande UI Automation-egenskaper.

Information om hur du implementerar UI Automation i en leverantör finns på UI Automation Providers for Managed Code. Information om hur du implementerar kontrollmönster finns på UI Automation Control Patterns och UI Automation Text Pattern.

UI Automation i en klient

Målet med många automatiserade testverktyg och scenarier är konsekvent och repeterbar manipulering av användargränssnittet. Detta kan omfatta enhetstestning av specifika kontroller till inspelning och uppspelning av testskript som itererar genom en serie allmänna åtgärder i en grupp kontroller.

En komplikation som uppstår vid automatiserade program är svårigheten att synkronisera ett test med ett dynamiskt mål. Till exempel en listrutekontroll, till exempel en som finns i Windows Aktivitetshanteraren, som visar en lista över program som körs. Eftersom objekten i listrutan uppdateras dynamiskt utanför testprogrammets kontroll är det omöjligt att försöka upprepa valet av ett specifikt objekt i listrutan med någon konsekvens. Liknande problem kan också uppstå när du försöker upprepa enkla fokusändringar i ett användargränssnitt som ligger utanför testprogrammets kontroll.

Programmatisk åtkomst

Programmatisk åtkomst ger möjlighet att imitera, genom kod, all interaktion och upplevelse som exponeras av traditionella mus- och tangentbordsindata. UI Automation möjliggör programmatisk åtkomst via fem komponenter:

  • UI Automation-trädet underlättar navigeringen genom gränssnittets struktur. Trädet är byggt ur samlingen av hWnd:s. Mer information finns i UI Automation Tree Overview.

  • Automation-element är enskilda komponenter i användargränssnittet. Dessa kan ofta vara mer detaljerade än en hWnd. Mer information finns i översikten över UI Automation-kontrolltyper.

  • Automation-egenskaper ger specifik information om gränssnittselement. Mer information finns i UI Automation Properties Overview.

  • Kontrollmönster definierar en viss aspekt av en kontrolls funktioner. de kan bestå av egenskaps-, metod-, händelse- och strukturinformation. För mer information, se Översikt över UI-automationskontrollmönster.

  • Automation-händelser ger händelsemeddelanden och information. Mer information finns i UI Automation Events Overview.

Viktiga egenskaper för Test Automation

Möjligheten att unikt identifiera och därefter hitta någon kontroll i användargränssnittet utgör grunden för att automatiserade testprogram ska fungera i användargränssnittet. Det finns flera Microsoft UI Automation-egenskaper som används av klienter och leverantörer som hjälper till med detta.

AutomationID

Identifierar på ett unikt sätt ett automatiseringselement bland dess syskon. AutomationIdProperty är inte lokaliserad, till skillnad från en egenskap som NameProperty som vanligtvis lokaliseras om en produkt levereras på flera språk. Se Använd egenskapen AutomationID.

Obs

AutomationIdProperty garanterar inte en unik identitet i hela automationsträdet. Ett program kan till exempel innehålla en menykontroll med flera menyalternativ på den översta nivån som i sin tur har flera underordnade menyalternativ. Dessa sekundära menyalternativ kan identifieras med ett allmänt schema, till exempel "Item1, Item2, Item3 osv.", vilket tillåter duplicerade identifierare för undermenyer inom huvudmenyalternativen.

Kontrolltyp

Identifierar vilken typ av kontroll som representeras av ett automationselement. Betydande information kan härledas från kunskap om kontrolltypen. Se översikten över UI Automation-kontrolltyper.

NameProperty

Det här är en textsträng som identifierar eller förklarar en kontroll. NameProperty bör användas med försiktighet eftersom den kan lokaliseras. Se UI-automationsöversikt över egenskaper.

Implementera UI Automation i ett testprogram

Steg Beskrivning
Lägg till UI Automation-referenser. UI Automation dll:er som krävs för UI Automation-klienter visas här.

– UIAutomationClient.dll ger åtkomst till API:er på klientsidan för UI Automation.
– UIAutomationClientSideProvider.dll ger möjlighet att automatisera Win32-kontroller. Se UI Automation Support for Standard Controls.
– UIAutomationTypes.dll ger åtkomst till de specifika typer som definierats i UI Automation.
Lägg till namnområdet System.Windows.Automation. Det här namnområdet innehåller allt som UI Automation-klienter behöver för att använda funktionerna i UI Automation förutom texthantering.
Lägg till namnområdet System.Windows.Automation.Text. Det här namnområdet innehåller allt som ett UI Automation-klienter behöver för att använda funktionerna i UI Automation-texthantering.
Hitta intressanta kontroller. Automatiserade testskript letar upp gränssnittsautomatiseringselement som representerar kontroller av intresse i automationsträdet.

Det finns flera sätt att hämta automationselement för användargränssnittet med kod.

– Fråga användargränssnittet (UI) med en Condition-instruktion. Det är vanligtvis här som språkneutrala AutomationIdProperty används. Obs! En AutomationIdProperty kan hämtas med hjälp av ett verktyg som Inspect.exe som kan specificera UI Automation-egenskaperna för en kontroll.

– Använd klassen TreeWalker för att bläddra igenom hela UI Automation-trädet eller en delmängd av det.
- Håll koll på fokus.
– Använd kontrollens hWnd.
– Använd skärmplats, till exempel platsen för musmarkören.

Se Hämta automationselement för användargränssnittet
Hämta kontrollmönster. Kontrollmönster exponerar vanliga beteenden för funktionellt liknande kontroller.

När du har lokaliserat de kontroller som kräver testning får automatiserade testskript kontrollmönstren av intresse från dessa UI Automation-element. Till exempel InvokePattern kontrollmönster för vanliga knappfunktioner eller WindowPattern kontrollmönster för fönsterfunktioner.

Se översikten över UI Automation Control Patterns.
Automatisera användargränssnittet. Automatiserade testskript kan nu styra vilket användargränssnitt som helst från ett gränssnittsramverk med hjälp av den information och de funktioner som exponeras av UI Automation-kontrollmönstren.

Det finns ett antal relaterade verktyg och tekniker som stöder automatiserad testning med UI Automation.

  • Inspect.exe är ett grafiskt användargränssnittsprogram (GUI) som kan användas för att samla in UI Automation-information för både provider- och klientutveckling och felsökning. Inspect.exe ingår i Windows SDK.

  • MSAABridge exponerar UI Automation-information för active accessibility-klienter. Det främsta målet med att överbrygga UI Automation till aktiv tillgänglighet är att ge befintliga Active Accessibility-klienter möjlighet att interagera med alla ramverk som har implementerat UI Automation.

Säkerhet

Säkerhetsinformation finns i UI Automation Security Overview.

Se även