Megosztás a következőn keresztül:


UI-automatizálás-elemek beszerzése

Feljegyzés

Ez a dokumentáció .NET-keretrendszer fejlesztőknek készült, akik a névtérben System.Windows.Automation meghatározott felügyelt UI-automatizálás osztályokat szeretnék használni. A UI-automatizálás kapcsolatos legfrissebb információkért lásd: Windows Automation API: UI-automatizálás.

Ez a témakör a felhasználói felület (UI) elemeihez tartozó objektumok beszerzésének AutomationElement különböző módjait ismerteti.

Figyelemfelhívás

Ha az ügyfélalkalmazás megpróbál elemeket keresni a saját felhasználói felületén, minden UI-automatizálás hívást külön szálon kell kezdeményeznie. További információ: UI-automatizálás Szálkezelés problémái.

Gyökérelem

Az objektumok keresésének AutomationElement kezdőhelyet kell tartalmaznia. Ez bármilyen elem lehet, beleértve az asztalt, az alkalmazásablakot vagy a vezérlőt.

Az asztal gyökéreleme, amelyből az összes elem csökkenőben van, a statikus AutomationElement.RootElement tulajdonságból származik.

Figyelemfelhívás

Általában meg kell próbálnia csak a közvetlen gyermekeket megszerezni a RootElement. Az utódok keresése több száz vagy akár több ezer elemen is átfolyhat, ami valószínűleg egy verem túlcsordulását eredményezheti. Ha egy adott elemet alacsonyabb szinten próbál beszerezni, a keresést az alkalmazásablakból vagy egy alacsonyabb szintű tárolóból kell elindítania.

Feltételek

Az UI-automatizálás elemek lekérésére használható legtöbb technika esetében meg kell adnia egy Conditionfeltételkészletet, amely meghatározza, hogy mely elemeket szeretné lekérni.

A legegyszerűbb feltétel TrueConditionegy előre definiált objektum, amely azt határozza meg, hogy a keresési tartomány összes elemét vissza kell adni. FalseCondition, a fordítottja TrueConditionkevésbé hasznos, mivel megakadályozza az elemeket.

Három másik előre definiált feltétel használható önállóan vagy más feltételekkel kombinálva: ContentViewCondition, ControlViewConditionés RawViewCondition. RawViewCondition, amelyet önmagában használnak, egyenértékű azzalTrueCondition, mert nem szűri az elemeket azok vagy IsContentElement tulajdonságaik IsControlElement alapján.

A többi feltétel egy vagy több PropertyCondition objektumból épül fel, amelyek mindegyike tulajdonságértéket határoz meg. Megadhatja például, PropertyCondition hogy az elem engedélyezve van-e, vagy hogy támogat egy bizonyos vezérlőmintát.

A feltételek logikai logikával kombinálhatók típusok AndConditionOrConditionNotConditionés .

Keresési tartomány

A keresési műveletnek FindFirstFindAll hatókörrel és kezdőhelyekkel kell rendelkeznie.

A hatókör határozza meg a keresendő kezdőhely körüli területet. Ez magában foglalhatja magát az elemet, a testvéreit, a szülőjét, az őseit, a közvetlen gyermekeit és leszármazottait.

A keresés hatókörét az enumerálásból származó TreeScope értékek bitenkénti kombinációja határozza meg.

Ismert elem keresése

Egy ismert elem megkereséséhez, amelyet a saját Name, AutomationIdvagy más tulajdonság vagy tulajdonságok kombinációja azonosít, a legegyszerűbb a FindFirst módszer használata. Ha a keresett elem egy alkalmazásablak, a keresés kiindulópontja lehet a RootElement.

Az UI-automatizálás elemek megkeresésének ez a módja az automatizált tesztelési forgatókönyvekben a legkedvesebb.

Elemek keresése egy részhalmazban

Ha meg szeretné keresni az összes olyan elemet, amely megfelel egy ismert elemhez kapcsolódó adott feltételeknek, használhatja a következőt FindAll: Ezzel a módszerrel például lekérheti a listaelemeket vagy a menüelemeket egy listából vagy menüből, vagy azonosíthatja a párbeszédpanel összes vezérlőelemét.

Részösszeg sétáltatása

Ha nem ismeri azokat az alkalmazásokat, amelyekkel az ügyfele használható, az osztály használatával létrehozhat egy részhalmazt az TreeWalker összes érdekes elemből. Az alkalmazás ezt egy fókuszban módosított eseményre válaszul teheti meg; vagyis amikor egy alkalmazás vagy vezérlő bemeneti fókuszt kap, a UI-automatizálás-ügyfél megvizsgálja a gyermekeket és talán a szűrt elem összes leszármazottját.

Egy másik módszer, amellyel TreeWalker egy elem őseit azonosíthatja. Ha például felsétál a fára, azonosíthatja egy vezérlőelem szülőablakát.

Használhatja TreeWalker az osztály egy objektumának létrehozásával (a fontos elemek definiálásával egy Condition), vagy a következő előre definiált objektumok egyikével, amelyek mezőiként TreeWalkervannak definiálva.

Mező Leírás
ContentViewWalker Csak azokat az elemeket keresi meg, amelyek IsContentElement tulajdonsága .true
ControlViewWalker Csak azokat az elemeket keresi meg, amelyek IsControlElement tulajdonsága .true
RawViewWalker Megkeresi az összes elemet.

Miután beszerezte a parancsot TreeWalker, a használata egyszerű. Egyszerűen hívja meg a metódusokat a Get részhalmaz elemei között való navigáláshoz.

A Normalize metódus használható arra, hogy a részhalmaz egy olyan elemére navigáljon, amely nem része a nézetnek. Tegyük fel például, hogy létrehozott egy altartomány nézetét a használatával ContentViewWalker. Az alkalmazás ezután értesítést kap arról, hogy egy görgetősáv megkapta a bemeneti fókuszt. Mivel a görgetősáv nem tartalomelem, nem jelenik meg a részhalmaz nézetében. A görgetősávot Normalize azonban átadhatja AutomationElement a tartalomnézetben található legközelebbi ősnek, és lekérheti.

Elem lekérésének egyéb módjai

A keresések és a navigáció mellett az alábbi módokon is lekérheti az egyiket AutomationElement .

Eseményből

Amikor az alkalmazás UI-automatizálás eseményt kap, az eseménykezelőnek átadott forrásobjektum egy AutomationElement. Ha például előfizetett a fókuszban módosított eseményekre, akkor a kapott forrás AutomationFocusChangedEventHandler az az elem, amely megkapta a fókuszt.

További információ: Feliratkozás UI-automatizálás eseményekre.

Pontból

Ha rendelkezik képernyőkoordinátával (például kurzorpozícióval), a statikus FromPoint módszerrel lekérheti az egyiketAutomationElement.

Ablakfogópontból

Ha le szeretne kérni egy AutomationElement HWND-ből, használja a statikus FromHandle metódust.

A Szűrt vezérlőből

A szűrt vezérlőt AutomationElement a statikus FocusedElement tulajdonságból is lekérheti.

Lásd még