Získání elementů automatizace uživatelského rozhraní

Poznámka:

Tato dokumentace je určená pro vývojáře rozhraní .NET Framework, kteří chtějí používat spravované třídy model UI Automation definované v System.Windows.Automation oboru názvů. Nejnovější informace o model UI Automation najdete v tématu Rozhraní API služby Windows Automation: model UI Automation.

Toto téma popisuje různé způsoby získání AutomationElement objektů pro prvky uživatelského rozhraní.

Upozornění

Pokud se klientská aplikace může pokusit najít prvky ve vlastním uživatelském rozhraní, musíte provést všechna model UI Automation volání na samostatné vlákno. Další informace najdete v tématu model UI Automation Problémy s vlákny.

Kořenový element

Všechna hledání AutomationElement objektů musí mít počáteční místo. Může to být libovolný prvek, včetně plochy, okna aplikace nebo ovládacího prvku.

Kořenový prvek pro plochu, ze kterého jsou všechny prvky sestupně, je získán ze statické AutomationElement.RootElement vlastnosti.

Upozornění

Obecně byste se měli pokusit získat pouze přímé děti RootElement. Hledání potomků může iterovat stovky nebo dokonce tisíce prvků, což může mít za následek přetečení zásobníku. Pokud se pokoušíte získat konkrétní prvek na nižší úrovni, měli byste začít hledání z okna aplikace nebo z kontejneru na nižší úrovni.

Podmínky

U většiny technik, které můžete použít k načtení model UI Automation prvků, musíte zadat , Conditioncož je sada kritérií definujících prvky, které chcete načíst.

Nejjednodušší podmínka je TrueCondition, předdefinovaný objekt určující, že všechny prvky v oboru vyhledávání mají být vráceny. FalseCondition, naopak TrueCondition, je méně užitečné, protože by zabránilo nalezení jakýchkoli prvků.

Tři další předdefinované podmínky lze použít samostatně nebo v kombinaci s jinými podmínkami: ContentViewCondition, ControlViewConditiona RawViewCondition. RawViewCondition, používá sám, je ekvivalentní TrueCondition, protože nefiltruje prvky podle jejich IsControlElement nebo IsContentElement vlastností.

Další podmínky jsou vytvořeny z jednoho nebo více PropertyCondition objektů, z nichž každý určuje hodnotu vlastnosti. Může například určit, PropertyCondition že je prvek povolený nebo že podporuje určitý řídicí vzor.

Podmínky lze kombinovat pomocí logické logiky vytvořením objektů typů AndCondition, OrConditiona NotCondition.

Obor vyhledávání

Hledání provedená pomocí FindFirst nebo FindAll musí mít obor i výchozí místo.

Obor definuje prostor kolem počátečního místa, které se má prohledávat. To může zahrnovat samotný prvek, jeho element na stejné úrovni, nadřazený objekt, jeho nadřazené objekty, jeho bezprostřední děti a jeho potomky.

Obor hledání je definován bitovou kombinací hodnot z výčtu TreeScope .

Vyhledání známého prvku

Chcete-li najít známý prvek, identifikovaný jeho Name, AutomationIdnebo některé jiné vlastnosti nebo kombinace vlastností, je nejjednodušší použít metodu FindFirst . Pokud je hledaným prvkem okno aplikace, může být RootElementpočátečním bodem hledání .

Tento způsob hledání prvků model UI Automation je nejužitečnější ve scénářích automatizovaného testování.

Hledání elementů v podstromu

Pokud chcete najít všechny prvky, které splňují konkrétní kritéria, která souvisejí se známým prvkem, můžete použít FindAll. Tuto metodu můžete použít například k načtení položek seznamu nebo položek nabídky ze seznamu nebo nabídky nebo k identifikaci všech ovládacích prvků v dialogovém okně.

Procházka podstromem

Pokud nemáte žádné předchozí znalosti o aplikacích, se kterými se klient může používat, můžete pomocí TreeWalker třídy vytvořit podstrom všech prvků, které vás zajímají. Vaše aplikace to může udělat v reakci na událost změněnou fokusem; to znamená, že když aplikace nebo ovládací prvek obdrží vstupní fokus, klient model UI Automation prozkoumá podřízené položky a možná všechny potomky prioritního prvku.

Dalším způsobem, jak TreeWalker lze použít, je identifikovat nadřazené prvky prvku. Můžete například procházet strom, který umožňuje identifikovat nadřazené okno ovládacího prvku.

Můžete použít TreeWalker buď vytvořením objektu třídy (definováním prvků zájmu předáním Condition) nebo pomocí jednoho z následujících předdefinovaných objektů, které jsou definovány jako pole TreeWalker.

Pole Popis
ContentViewWalker Vyhledá pouze prvky, jejichž IsContentElement vlastnost je true.
ControlViewWalker Vyhledá pouze prvky, jejichž IsControlElement vlastnost je true.
RawViewWalker Najde všechny prvky.

Po získání je TreeWalkerpoužití jednoduché. Jednoduše zavolejte Get metody pro navigaci mezi prvky podstromu.

Metodu Normalize lze použít k navigaci na prvek v podstromu z jiného prvku, který není součástí zobrazení. Předpokládejme například, že jste vytvořili zobrazení podstromu pomocí .ContentViewWalker Aplikace pak obdrží oznámení, že posuvník obdržel vstupní fokus. Vzhledem k tomu, že posuvník není prvek obsahu, není v zobrazení podstromu. Můžete však předat reprezentaci AutomationElement posuvníku Normalize a načíst nejbližšího předchůdce, který je v zobrazení obsahu.

Další způsoby načtení elementu

Kromě hledání a navigace můžete načíst AutomationElement následující způsoby.

Z události

Když aplikace obdrží model UI Automation událost, zdrojový objekt předaný obslužné rutině události je .AutomationElement Pokud jste se například přihlásili k odběru událostí změně fokusu, zdroj předaný vašemu AutomationFocusChangedEventHandler prvku je prvek, který získal fokus.

Další informace najdete v tématu Přihlášení k odběru událostí model UI Automation.

Z bodu

Pokud máte souřadnice obrazovky (například pozici kurzoru), můžete ji načíst AutomationElement pomocí statické FromPoint metody.

Z úchytu okna

K načtení z AutomationElement HWND použijte statickou FromHandle metodu.

Z ovládacího prvku Prioritní

Ze statické FocusedElement vlastnosti můžete načíst AutomationElement ovládací prvek, který představuje prioritní ovládací prvek.

Viz také