Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 gränssnittsramverk 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, ett ramverk som är utformat för att tillhandahålla en lösning för att göra kontroller och program tillgängliga. Microsoft Active Accessibility har inte utformats med testautomation i åtanke, men den utvecklades till den rollen på grund av liknande krav på tillgänglighet och automatisering. UI Automation är särskilt utformat för att tillhandahålla robusta funktioner för automatiserad testning, förutom att tillhandahålla mer förfinade lösningar för tillgänglighet. Till exempel förlitar sig Microsoft Active Accessibility på ett enda gränssnitt för att exponera information om användargränssnittet och för att samla in den information som behövs av hjälpmedelsprodukter. UI Automation separerar de två modellerna.
Både en provider och en klient måste implementera UI Automation för att det ska vara användbart som ett automatiserat testverktyg. Leverantörer av användargränssnittsautomatisering är program, till exempel Microsoft Word, Microsoft Excel och andra program eller kontroller från tredje part som baseras på Windows-operativsystemet. UI Automation-klienter inkluderar automatiserade testskript och hjälpmedelsteknikprogram.
Det här avsnittet innehåller följande avsnitt.
- UI-automatisering för leverantörer
- UI Automation i klientprogram
- viktiga egenskaper för Test Automation
- relaterade verktyg och tekniker
- Relaterade ämnen
UI Automation med leverantörer
För att automatisera ett element i användargränssnittet måste utvecklaren 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 UI Automation-kontrollmönstren som speglar funktionaliteten och beteendet för användargränssnittselementet implementeras på kontrollen. Användarinteraktion med en kombinationsrutekontroll innebär till exempel vanligtvis att du expanderar och komprimerar kombinationsrutan för att visa eller dölja en lista med objekt, välja ett objekt i listan eller lägga till ett nytt värde via tangentbordsindata.
Med andra hjälpmedelsmodeller måste utvecklare samla in information direkt från enskilda knappar, menyer eller andra kontroller. Varje kontrolltyp finns i dussintals mindre varianter. Med andra ord, även om 10 varianter av en push-knapp fungerar på samma sätt och utför samma funktion, måste de alla behandlas som unika kontroller. Det finns inget sätt att veta att dessa kontroller är funktionellt likvärdiga. UI Automation-kontrollmönster har utvecklats för att representera dessa vanliga kontrollbeteenden. För mer information, se UI-automationskontrollmönsters översikt.
Utan den enhetliga modellen med kontrollmönster som tillhandahålls av UI Automation måste testverktyg och utvecklare ha ramverksspecifik information för att exponera egenskaper och kontrollbeteenden i det ramverket. Eftersom flera olika gränssnittsramverk kan finnas samtidigt i Windows-operativsystem, inklusive Microsoft 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 visas till exempel de ramverksspecifika egenskapsnamn som krävs för att hämta namnet eller texten som är associerad med en knappkontroll och visar motsvarande UI Automation-egenskap.
Kontrolltyp | Ramverk för användargränssnitt | Ramverksspecifik egenskap | UI Automation-egenskap |
---|---|---|---|
Knapp | WPF | Innehåll | Namnegenskap |
Knapp | Win32 | Bildtext | Namnegenskap |
Bild | HTML | Alt | Namn egenskap |
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 provider finns i UI Automation Provider Programmer's Guide. Information om hur du implementerar kontrollmönster finns i Implementera UI Automation Control Patterns.
Gränssnittsautomation i klienter
Målet med automatiserade testverktyg och scenarier är konsekvent och repeterbar manipulering av användargränssnittet. Detta kan till exempel omfatta enhetstestning av specifika kontroller och registrering och körning av testskript som itererar genom en serie allmänna åtgärder på en grupp kontroller.
En komplikation i automatiserade program är svårigheten att synkronisera ett test med ett dynamiskt mål, till exempel en listrutekontroll, till exempel Windows Task Manager, som visar en lista över program som körs. Eftersom objekten i listrutan uppdateras dynamiskt utanför testprogrammets kontroll är ett försök att upprepa att markera ett specifikt objekt i listrutan med konsekvens omöjligt. Liknande problem kan 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 skapas från samlingen av HWNDs. 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.
- 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. Mer information finns i UI Automation Control Patterns Overview.
- Automationhä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. UI Automation-egenskaper som används av klienter och leverantörer för att identifiera och hitta kontroller beskrivs i följande tabell.
Egenskap | Beskrivning |
---|---|
AutomationId | Skiljer unikt ett automations-element från dess syskon. Stöd för egenskapen AutomationId krävs inte. När den är tillgänglig är egenskapen AutomationId för ett element densamma i alla instanser av programmet, oavsett det lokala språket. Även om egenskapen AutomationId är unik bland syskonelement är den kanske inte unik på hela skrivbordet. Till exempel kan flera instanser av ett program eller flera mappvyer i Microsoft Windows Explorer innehålla element med samma AutomationIdProperty, till exempel "SystemMenuBar". Klienter bör inte göra några antaganden om AutomationIds som exponeras av andra program. AutomationId är inte garanterat stabilt mellan olika utgåvor eller kompileringar av ett program. |
Kontrolltyp | Identifierar vilken typ av kontroll som representeras av ett automationselement. Betydande information kan härledas från kunskap om kontrolltypen. Mer information finns i översikten över UI Automation-kontrolltyper. |
Namn | En textsträng som identifierar eller förklarar syftet med ett automationselement. Den bör användas med försiktighet eftersom den kan lokaliseras. Egenskapen Namn är inte den unika identifieraren bland syskon. För testautomatisering bör klienter använda egenskapen AutomationId eller Egenskapen RuntimeId i stället. |
RuntimeId | En matris med heltal som representerar en identifierare för ett automationselement. Identifieraren är unik på skrivbordet, men är garanterat unik endast för användargränssnittet på skrivbordet där det genererades. Identifierare kan återanvändas över tid. Använd IUIAutomation::CompareElements för att avgöra om elementet som för närvarande har ett visst körnings-ID är samma element som tidigare hade det ID:t. Dessutom kan formatet för egenskapen RuntimeId ändras. Den bör behandlas som ett ogenomskinlig värde och endast användas för jämförelse. till exempel för att avgöra om ett automation-element finns i cacheminnet. |
Relaterade verktyg och tekniker
Inspect (Inspect.exe) är ett Windows-baserat verktyg som du kan använda för att samla in UI Automation-information för provider- och klientutveckling och felsökning. Inspektera ingår i Windows Software Development Kit (SDK).
Relaterade ämnen