UI Otomasyon Öğelerini Alma
Not
Bu belgeler, ad alanında tanımlanan yönetilen UI Otomasyonu sınıflarını kullanmak isteyen .NET Framework geliştiricilerine System.Windows.Automation yöneliktir. UI Otomasyonu hakkında en son bilgiler için bkz. Windows Otomasyonu API'si: UI Otomasyonu.
Bu konuda, kullanıcı arabirimi (UI) öğeleri için nesneleri edinmenin AutomationElement çeşitli yolları açıklanmaktadır.
Dikkat
İstemci uygulamanız kendi kullanıcı arabirimindeki öğeleri bulmaya çalışabilirse, tüm UI Otomasyonu çağrılarını ayrı bir iş parçacığında yapmanız gerekir. Daha fazla bilgi için bkz. UI Otomasyonu İş Parçacığı Sorunları.
Kök Öğe
Tüm nesne aramalarının AutomationElement başlangıç noktası olmalıdır. Bu, masaüstü, uygulama penceresi veya denetim de dahil olmak üzere herhangi bir öğe olabilir.
Tüm öğelerin alttan alındığı masaüstü kök öğesi statik AutomationElement.RootElement özelliğinden alınır.
Dikkat
Genel olarak, öğesinin yalnızca doğrudan alt öğelerini RootElementelde etmeyi denemelisiniz. Alt öğeler için yapılan bir arama yüzlerce, hatta binlerce öğede yinelenebilir ve büyük olasılıkla yığın taşmasıyla sonuçlanabilir. Belirli bir öğeyi daha düşük bir düzeyde elde etmeye çalışıyorsanız, aramanızı uygulama penceresinden veya daha düşük bir düzeydeki bir kapsayıcıdan başlatmanız gerekir.
Koşullar
UI Otomasyonu öğeleri almak için kullanabileceğiniz tekniklerin çoğunda, almak istediğiniz öğeleri tanımlayan bir ölçüt kümesi olan bir belirtmelisinizCondition.
En basit koşul, TrueConditionarama kapsamındaki tüm öğelerin döndürüleceğini belirten önceden tanımlanmış bir nesnedir. FalseCondition, öğesinin TrueConditiontersi, herhangi bir öğe bulunmasını engelleyeceğinden daha az kullanışlıdır.
Önceden tanımlanmış üç koşul tek başına veya diğer koşullarla birlikte kullanılabilir: ContentViewCondition, ControlViewConditionve RawViewCondition. RawViewCondition, öğeleri IsControlElement veya IsContentElement özelliklerine TrueConditiongöre filtrelemediğinden, kendi başına kullanılan ile eşdeğerdir.
Diğer koşullar, her biri bir özellik değeri belirten bir veya daha fazla PropertyCondition nesneden oluşturulur. Örneğin, bir PropertyCondition öğesinin etkinleştirildiğini veya belirli bir denetim desenini desteklediğini belirtebilir.
Koşullar, , OrConditionve NotConditiontürlerinde AndConditionnesneler oluşturularak Boole mantığı kullanılarak birleştirilebilir.
Arama Kapsamı
veya kullanılarak FindFirstFindAll yapılan aramalar, başlangıç yerinin yanı sıra bir kapsama da sahip olmalıdır.
Kapsam, aranacak başlangıç yerinin etrafındaki alanı tanımlar. Bu öğenin kendisini, eşdüzeylerini, ebeveynini, atalarını, anlık alt öğelerini ve alt öğelerini içerebilir.
Aramanın kapsamı, numaralandırmadaki TreeScope değerlerin bit düzeyinde bir bileşimiyle tanımlanır.
Bilinen Öğeyi Bulma
, veya başka bir özellik ya da özellik bileşimiyle NameAutomationIdtanımlanan bilinen bir öğeyi bulmak için yöntemini kullanmak FindFirst en kolay yöntemdir. Aranan öğe bir uygulama penceresiyse, aramanın başlangıç noktası olabilir RootElement.
UI Otomasyonu öğeleri bulmanın bu yolu, otomatik test senaryolarında en kullanışlıdır.
Alt Ağaçtaki Öğeleri Bulma
Bilinen bir öğeyle ilgili belirli ölçütlere uyan tüm öğeleri bulmak için kullanabilirsiniz FindAll. Örneğin, bir liste veya menüden liste öğelerini veya menü öğelerini almak ya da iletişim kutusundaki tüm denetimleri tanımlamak için bu yöntemi kullanabilirsiniz.
Subtree Yürüme
İstemcinizin birlikte kullanılabildiği uygulamalar hakkında önceden bilginiz yoksa, sınıfını kullanarak ilgilendiğiniz tüm öğelerin alt ağacını TreeWalker oluşturabilirsiniz. Uygulamanız, odak değiştirme olayına yanıt olarak bunu yapabilir; diğer bir ifadeyle, bir uygulama veya denetim giriş odağını aldığında, UI Otomasyonu istemcisi odaklanmış öğenin alt öğelerini ve belki de tüm alt öğelerini inceler.
Bir öğenin atalarını tanımlamanın başka bir yolu TreeWalker da kullanılabilir. Örneğin, ağaçtan yukarı doğru ilerleyerek bir denetimin üst penceresini tanımlayabilirsiniz.
sınıfının bir nesnesini oluşturarak (bir geçirerek Conditionilgili öğeleri tanımlayarak) veya alanları TreeWalkerolarak tanımlanan aşağıdaki önceden tanımlanmış nesnelerden birini kullanarak kullanabilirsinizTreeWalker.
Alan | Açıklama |
---|---|
ContentViewWalker | Yalnızca özelliği olan IsContentElementtrue öğeleri bulur. |
ControlViewWalker | Yalnızca özelliği olan IsControlElementtrue öğeleri bulur. |
RawViewWalker | Tüm öğeleri bulur. |
bir elde TreeWalkerettikten sonra, bunu kullanmak basittir. Alt ağaç Get
öğeleri arasında gezinmek için yöntemleri çağırmanız yeterlidir.
yöntemi, Normalize alt ağaçtaki bir öğeye görünümün parçası olmayan başka bir öğeden gitmek için kullanılabilir. Örneğin, kullanarak ContentViewWalkerbir alt ağaç görünümü oluşturduğunuzu varsayalım. Uygulamanız daha sonra bir kaydırma çubuğunun giriş odağını aldığına ilişkin bildirim alır. Kaydırma çubuğu bir içerik öğesi olmadığından, alt ağaç görünümünüzde mevcut değildir. Ancak, kaydırma çubuğunu temsil eden öğesini Normalize öğesine geçirebilir AutomationElement ve içerik görünümündeki en yakın üst öğesini alabilirsiniz.
Öğe Almanın Diğer Yolları
Aramalara ve gezintiye ek olarak, öğesini AutomationElement aşağıdaki yollarla alabilirsiniz.
Bir Olaydan
Uygulamanız bir UI Otomasyonu olayı aldığında, olay işleyicinize geçirilen kaynak nesne bir AutomationElement'dir. Örneğin, odak değiştirme olaylarına aboneyseniz, size AutomationFocusChangedEventHandler geçirilen kaynak odağı alan öğedir.
Daha fazla bilgi için bkz. UI Otomasyonu Olaylara abone olma.
Bir Noktadan
Ekran koordinatlarınız varsa (örneğin, imleç konumu), statik FromPoint yöntemi kullanarak bir AutomationElement alabilirsiniz.
Pencere Tutamacından
HWND'den bir almak AutomationElement için statik FromHandle yöntemini kullanın.
Odaklanmış Denetimden
Statik FocusedElement özelliğinden odaklanmış denetimi temsil eden bir AutomationElement alabilirsiniz.