UI Automation gebruiken voor geautomatiseerd testen
Notitie
Deze documentatie is bedoeld voor .NET Framework-ontwikkelaars die de beheerde UI Automation-klassen willen gebruiken die zijn gedefinieerd in de System.Windows.Automation naamruimte. Zie Windows Automation-API: UI Automationvoor de meest recente informatie over UI Automation.
In dit overzicht wordt beschreven hoe Microsoft UI Automation nuttig kan zijn als framework voor programmatische toegang in geautomatiseerde testscenario's.
UI Automation biedt een uniform objectmodel waarmee alle gebruikersinterfaceframeworks complexe en uitgebreide functionaliteit op een toegankelijke en eenvoudig geautomatiseerde manier beschikbaar kunnen maken.
UI Automation is ontwikkeld als opvolger van Microsoft Active Accessibility. Actieve toegankelijkheid is een bestaand framework dat is ontworpen om een oplossing te bieden voor het toegankelijk maken van besturingselementen en toepassingen. Actieve toegankelijkheid is niet ontworpen met het oog op testautomatisering, ook al is het veranderd in die rol vanwege de zeer vergelijkbare vereisten voor toegankelijkheid en automatisering. Ui Automation biedt niet alleen meer verfijnde oplossingen voor toegankelijkheid, maar is ook speciaal ontworpen om robuuste functionaliteit te bieden voor geautomatiseerde tests. Actieve toegankelijkheid is bijvoorbeeld afhankelijk van één interface om informatie over de gebruikersinterface weer te geven en de informatie te verzamelen die nodig is voor AT-producten; Ui Automation scheidt de twee modellen.
Zowel een provider als een client zijn vereist om UI Automation te implementeren, zodat deze nuttig kan zijn als een geautomatiseerd testhulpprogramma. UI Automation-providers zijn toepassingen zoals Microsoft Word, Excel en andere toepassingen of besturingselementen van derden op basis van het Microsoft Windows-besturingssysteem. UI Automation-clients bevatten geautomatiseerde testscripts en ondersteunende technologietoepassingen.
Notitie
Het doel van dit overzicht is om de nieuwe en verbeterde geautomatiseerde testmogelijkheden van UI Automation te laten zien. Dit overzicht is niet bedoeld om informatie te verstrekken over toegankelijkheidsfuncties en zal niet anders ingaan op toegankelijkheid dan waar nodig.
UI-automatisering in een provider
Om een gebruikersinterface te kunnen automatiseren, moet een ontwikkelaar van een toepassing of besturingselement kijken welke acties een eindgebruiker op het UI-object kan uitvoeren met behulp van standaardtoetsenbord- en muisinteractie.
Zodra deze belangrijke acties zijn geïdentificeerd, moeten de bijbehorende UI Automation-besturingspatronen (dat wil gezegd, de besturingspatronen die de functionaliteit en het gedrag van het UI-element weerspiegelen) worden geïmplementeerd op het besturingselement. Gebruikersinteractie met een controle voor een keuzelijst met invoervak (zoals het dialoogvenster Uitvoeren) houdt meestal in dat de keuzelijst met invoervak wordt uitgebreid en samengevouwen om een lijst met items te verbergen of weer te geven, een item uit die lijst te selecteren of een nieuwe waarde toe te voegen via toetsenbordinvoer.
Notitie
Met andere toegankelijkheidsmodellen moeten ontwikkelaars informatie rechtstreeks verzamelen van afzonderlijke knoppen, menu's of andere besturingselementen. Helaas heeft elk type besturingselementen tientallen kleine variaties. Met andere woorden, hoewel tien variaties van een drukknop allemaal op dezelfde manier werken en dezelfde functie uitvoeren, moeten ze allemaal worden behandeld als unieke besturingselementen. Er is geen manier om te weten dat deze besturingselementen functioneel gelijkwaardig zijn. Controlepatronen zijn ontwikkeld om dit veelvoorkomende besturingsgedrag weer te geven. Zie overzicht van ui-automatiseringspatronenvoor meer informatie.
UI-automatisering implementeren
Zoals eerder vermeld, moeten testhulpprogramma's en ontwikkelaars, zonder het geïntegreerde model van UI Automation, frameworkspecifieke informatie kennen om eigenschappen en gedrag van besturingselementen in dat framework beschikbaar te maken. Omdat er op elk moment verschillende UI-frameworks kunnen zijn binnen Windows-besturingssystemen, waaronder Win32, Windows Forms en Windows Presentation Foundation (WPF), kan het een lastige taak zijn om meerdere toepassingen te testen met besturingselementen die lijken op elkaar lijken. De volgende tabel bevat bijvoorbeeld een overzicht van de frameworkspecifieke eigenschapsnamen die nodig zijn om de naam (of tekst) op te halen die is gekoppeld aan een knopbesturingselement en toont de enkele equivalente UI Automation-eigenschap.
Type besturingselement voor UI Automation | Gebruikersinterface-raamwerk | Frameworkspecifieke eigenschap | UI Automation-eigenschap |
---|---|---|---|
Knop | Windows Presentation Foundation | Inhoud | NaamEigenschap |
Knop | Win32 | Bijschrift | NaamEigenschap |
Beeld | HTML | Alt | NaamEigenschap |
UI Automation-providers zijn verantwoordelijk voor het toewijzen van de frameworkspecifieke eigenschappen van hun besturingselementen aan de equivalente EIGENSCHAPPEN van UI Automation.
Informatie over het implementeren van UI Automation in een provider vindt u in UI Automation-providers voor beheerde code. Informatie over het implementeren van besturingspatronen is beschikbaar op UI Automation Control Patterns en UI Automation Text Pattern.
UI-automatisering in een client
Het doel van veel geautomatiseerde testhulpprogramma's en scenario's is de consistente en herhaalbare manipulatie van de gebruikersinterface. Dit kan betrekking hebben op het testen van specifieke controls, tot het opnemen en afspelen van testscripts die een reeks generieke acties op een groep controls doorlopen.
Een complicatie die voortvloeit uit geautomatiseerde toepassingen is de moeilijkheid om een test te synchroniseren met een dynamisch doel. Een besturingselement voor keuzelijsten, zoals een besturingselement in Windows Taakbeheer, waarin een lijst met toepassingen wordt weergegeven die momenteel worden uitgevoerd. Omdat de items in de keuzelijst dynamisch worden bijgewerkt buiten het besturingselement van de testtoepassing, is het onmogelijk om de selectie van een specifiek item in de keuzelijst te herhalen, met elke consistentie. Soortgelijke problemen kunnen zich ook voordoen wanneer u eenvoudige focuswijzigingen probeert te herhalen in een gebruikersinterface die buiten het beheer van de testtoepassing valt.
Programmatische toegang
Programmatische toegang biedt de mogelijkheid om, via code, elke interactie en ervaring die wordt weergegeven door traditionele muis- en toetsenbordinvoer te imiteren. UI Automation maakt programmatische toegang mogelijk via vijf onderdelen:
De UI Automation-structuur vereenvoudigt de navigatie door de structuur van de gebruikersinterface. De boom is gebouwd op basis van de verzameling hWnd's. Zie Overzicht van de ui-automatiseringsstructuurvoor meer informatie.
Automatiseringselementen zijn afzonderlijke onderdelen in de gebruikersinterface. Deze kunnen vaak gedetailleerder zijn dan een hWnd. Zie voor meer informatie ui Automation Control Types Overview.
Automatiseringseigenschappen bieden specifieke informatie over UI-elementen. Zie UI Automation Properties Overviewvoor meer informatie.
Controlepatronen definiëren een bepaald aspect van de functionaliteit van een besturingselement; ze kunnen bestaan uit eigenschaps-, methode-, gebeurtenis- en structuurgegevens. Zie overzicht van ui-automatiseringspatronenvoor meer informatie.
Automatiseringsgebeurtenissen bieden meldingen en informatie. Zie Overzicht van UI Automation-gebeurtenissenvoor meer informatie.
Belangrijkste eigenschappen voor testautomatisering
De mogelijkheid om elk besturingselement in de gebruikersinterface op unieke wijze te identificeren en vervolgens te vinden, biedt de basis voor geautomatiseerde testtoepassingen die op die gebruikersinterface kunnen worden uitgevoerd. Er zijn verschillende Eigenschappen van Microsoft UI Automation die worden gebruikt door clients en providers die hierbij helpen.
AutomationID
Uniek identificeert een automatisatie-element en onderscheidt het van zijn broers en zussen. AutomationIdProperty is niet gelokaliseerd, in tegenstelling tot een eigenschap zoals NameProperty die doorgaans wordt gelokaliseerd als een product in meerdere talen wordt verzonden. Zie De eigenschap AutomationID gebruiken.
Notitie
AutomationIdProperty garandeert geen unieke identiteit in de automatiseringsstructuur. Een toepassing kan bijvoorbeeld een menubesturingselement bevatten met meerdere menu-items op het hoogste niveau die op zijn beurt meerdere onderliggende menu-items bevatten. Deze secundaire menu-items kunnen worden geïdentificeerd met een generiek schema, zoals 'Item1, Item 2, Item3, enzovoort', waardoor dubbele identificaties voor kinderen van topniveau menu-items worden toegestaan.
ControlType
Hiermee wordt het type besturingselement geïdentificeerd dat wordt vertegenwoordigd door een automatiseringselement. Belangrijke informatie kan worden afgeleid van kennis van het besturingstype. Zie Overzicht van besturingselementtypen voor UI-automatisering.
NaamEigenschap
Dit is een tekenreeks die een besturingselement identificeert of uitlegt. NameProperty moet voorzichtig worden gebruikt omdat deze kan worden gelokaliseerd. Zie Overzicht van eigenschappen van UI Automation.
UI-automatisering implementeren in een testtoepassing
Stap | Beschrijving |
---|---|
Voeg de UI Automation-verwijzingen toe. | De UI Automation-dll's die nodig zijn voor UI Automation-clients worden hier vermeld. - UIAutomationClient.dll biedt toegang tot de API's aan de clientzijde van UI Automation. - UIAutomationClientSideProvider.dll biedt de mogelijkheid om Win32-besturingselementen te automatiseren. Zie Ondersteuning voor ui-automatisering voor standaardbesturingselementen. - UIAutomationTypes.dll biedt toegang tot de specifieke typen die zijn gedefinieerd in UI Automation. |
Voeg de System.Windows.Automation naamruimte toe. | Deze naamruimte bevat alles wat UI Automation-clients nodig hebben om de mogelijkheden van UI Automation te gebruiken, behalve tekstverwerking. |
Voeg de System.Windows.Automation.Text naamruimte toe. | Deze naamruimte bevat alles wat een UI Automation-clients nodig hebben om de mogelijkheden van ui Automation-tekstverwerking te gebruiken. |
Zoek de interessante besturingselementen. | Geautomatiseerde testscripts zoeken UI Automation-elementen die besturingselementen van belang in de automatiseringsstructuur vertegenwoordigen. Er zijn meerdere manieren om UI Automation-elementen met code te verkrijgen. - Voer een query uit voor de gebruikersinterface met behulp van een Condition-instructie. Dit is meestal waar de taalneutrale AutomationIdProperty wordt gebruikt. Opmerking: Een AutomationIdProperty kan worden verkregen met behulp van een hulpmiddel, zoals Inspect.exe dat de UI Automation-eigenschappen van een bedieningselement kan opsommen. - Gebruik de TreeWalker-klasse om de volledige UI Automation-structuur of een subset daarvan te doorlopen. - Focus bijhouden. - Gebruik de hWnd van het besturingselement. - Gebruik schermlocatie, zoals de locatie van de muiscursor. Zie Het verkrijgen van UI-automatiseringselementen |
Controlepatronen verkrijgen. | Controlepatronen stellen veelvoorkomend gedrag beschikbaar voor functioneel vergelijkbare besturingselementen. Na het vinden van de besturingselementen waarvoor tests zijn vereist, verkrijgen geautomatiseerde testscripts de controlepatronen die van belang zijn voor deze UI Automation-elementen. Het InvokePattern besturingspatroon voor typische knopfunctionaliteit of het WindowPattern besturingspatroon voor vensterfunctionaliteit. Zie UI-automatiseringscontrolepatronen Overzicht. |
Automatiseer de gebruikersinterface. | Geautomatiseerde testscripts kunnen nu elke gewenste gebruikersinterface beheren vanuit een UI-framework met behulp van de informatie en functionaliteit die wordt weergegeven door de UI Automation-besturingspatronen. |
Verwante hulpprogramma's en technologieën
Er zijn een aantal gerelateerde hulpprogramma's en technologieën die ondersteuning bieden voor geautomatiseerde tests met UI Automation.
Inspect.exe is een grafische gebruikersinterfacetoepassing (GUI) die kan worden gebruikt om UI Automation-informatie te verzamelen voor zowel provider- als clientontwikkeling en foutopsporing. Inspect.exe is opgenomen in de Windows SDK.
MSAABridge stelt UI Automation-informatie beschikbaar voor actieve toegankelijkheidsclients. Het belangrijkste doel van het overbruggen van UI Automation naar Actieve toegankelijkheid is om bestaande Active Accessibility-clients de mogelijkheid te bieden om te communiceren met elk framework dat UI Automation heeft geïmplementeerd.
Veiligheid
Zie UI Automation Security Overviewvoor beveiligingsinformatie.
Zie ook
- Basisprincipes van UI Automation