Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Dokumentasi ini ditujukan untuk pengembang .NET Framework yang ingin menggunakan kelas UI Automation terkelola yang ditentukan pada namespace System.Windows.Automation. Untuk informasi terbaru tentang UI Automation, lihat API Automasi Windows: Automasi Antarmuka Pengguna.
Topik ini menjelaskan berbagai cara untuk mendapatkan AutomationElement objek untuk elemen antarmuka pengguna (UI).
Perhatian
Jika aplikasi klien Anda mungkin mencoba menemukan elemen di antarmuka penggunanya sendiri, Anda harus melakukan semua panggilan Automation UI pada utas terpisah. Untuk informasi selengkapnya, lihat Masalah UI Automation Threading.
Elemen Akar
Semua pencarian objek AutomationElement harus memiliki tempat awal. Ini bisa menjadi elemen apa pun, termasuk desktop, jendela aplikasi, atau kontrol.
Elemen akar untuk desktop, dari mana semua elemen diturunkan, diperoleh dari properti statis AutomationElement.RootElement.
Perhatian
Secara umum, Anda harus mencoba untuk hanya mendapatkan anak-anak langsung dari RootElement. Pencarian terhadap turunan dapat mengiterasi melalui ratusan atau bahkan ribuan elemen, yang mungkin mengakibatkan luapan tumpukan. Jika Anda mencoba mendapatkan elemen tertentu pada tingkat yang lebih rendah, Anda harus memulai pencarian dari jendela aplikasi atau dari kontainer pada tingkat yang lebih rendah.
Kondisi
Untuk sebagian besar teknik yang dapat Anda gunakan untuk mengambil elemen Automation UI, Anda harus menentukan Condition, yang merupakan serangkaian kriteria yang menentukan elemen apa yang ingin Anda ambil.
Kondisi paling sederhana adalah TrueCondition, objek yang telah ditentukan yang menentukan bahwa semua elemen dalam cakupan pencarian akan dikembalikan. FalseCondition, sebaliknya , TrueConditionkurang berguna, karena akan mencegah elemen apa pun ditemukan.
Tiga kondisi lain yang telah ditentukan sebelumnya dapat digunakan sendiri atau dalam kombinasi dengan kondisi lain: ContentViewCondition, ControlViewCondition, dan RawViewCondition. RawViewCondition, digunakan dengan sendirinya, setara dengan TrueCondition, karena tidak memfilter elemen berdasarkan properti IsControlElement atau IsContentElement miliknya.
Kondisi lain dibangun dari satu atau beberapa PropertyCondition objek, yang masing-masing menentukan nilai properti. Misalnya, PropertyCondition mungkin menentukan bahwa elemen diaktifkan, atau mendukung pola kontrol tertentu.
Kondisi dapat dikombinasikan menggunakan logika Boolean dengan membuat objek jenis AndCondition, , OrConditiondan NotCondition.
Cakupan Pencarian
Pencarian yang dilakukan dengan menggunakan FindFirst atau FindAll harus memiliki cakupan serta tempat awal.
Cakupan menentukan ruang di sekitar tempat awal yang akan dicari. Ini mungkin termasuk elemen itu sendiri, saudara kandungnya, induknya, leluhurnya, anak-anak langsungnya, dan keturunannya.
Cakupan pencarian didefinisikan oleh kombinasi nilai bitwise dari TreeScope enumerasi.
Menemukan Elemen yang Diketahui
Untuk menemukan elemen yang diketahui, diidentifikasi oleh Name, AutomationId, atau beberapa properti atau kombinasi properti lainnya, paling mudah untuk menggunakan metode FindFirst. Jika elemen yang dicari adalah jendela aplikasi, titik awal pencarian dapat menjadi RootElement.
Cara menemukan elemen Automation UI ini paling berguna dalam skenario pengujian otomatis.
Menemukan Elemen dalam Subtree
Untuk menemukan semua elemen yang memenuhi kriteria tertentu yang terkait dengan elemen yang diketahui, Anda dapat menggunakan FindAll. Misalnya, Anda dapat menggunakan metode ini untuk mengambil item daftar atau item menu dari daftar atau menu, atau untuk mengidentifikasi semua kontrol dalam kotak dialog.
Berjalan di Subtree
Jika Anda tidak memiliki pengetahuan sebelumnya tentang aplikasi yang dapat digunakan klien Anda, Anda dapat membuat subtree dari semua elemen yang menarik dengan menggunakan TreeWalker kelas . Aplikasi Anda mungkin melakukan ini sebagai respons terhadap peristiwa yang diubah fokus; artinya, ketika aplikasi atau kontrol menerima fokus input, klien Automation UI memeriksa anak-anak dan mungkin semua turunan dari elemen yang berfokus.
Cara lain di mana TreeWalker dapat digunakan adalah dengan mengidentifikasi leluhur elemen. Misalnya, dengan berjalan ke atas pohon, Anda dapat mengidentifikasi jendela induk kontrol.
Anda dapat menggunakan TreeWalker dengan membuat objek kelas (menentukan elemen yang menarik dengan meneruskan Condition), atau dengan menggunakan salah satu objek yang telah ditentukan sebelumnya berikut yang didefinisikan sebagai bidang TreeWalker.
| Ladang | Deskripsi |
|---|---|
| ContentViewWalker | Hanya menemukan elemen yang propertinya IsContentElement adalah true. |
| ControlViewWalker | Hanya menemukan elemen yang propertinya IsControlElement adalah true. |
| RawViewWalker | Menemukan semua elemen. |
Setelah Anda mendapatkan TreeWalker, menggunakannya mudah. Cukup panggil Get metode untuk menavigasi di antara elemen subtree.
Metode Normalize ini dapat digunakan untuk menavigasi ke elemen dalam subtree dari elemen lain yang bukan bagian dari tampilan. Misalnya, Anda telah membuat tampilan subtree dengan menggunakan ContentViewWalker. Aplikasi Anda kemudian menerima pemberitahuan bahwa bilah gulir telah menerima fokus input. Karena bilah gulir bukan elemen konten, bilah gulir tidak ada dalam tampilan subtree Anda. Namun, Anda dapat meneruskan AutomationElement yang mewakili bilah gulir ke Normalize dan mengambil leluhur terdekat yang ada dalam tampilan konten.
Cara Lain untuk Mengambil Elemen
Selain pencarian dan navigasi, Anda dapat mengambil sebuah AutomationElement dengan cara berikut.
Dari Acara
Saat aplikasi Anda menerima peristiwa Automation UI, objek sumber yang diteruskan ke penanganan aktivitas Anda adalah AutomationElement. Misalnya, jika Anda telah berlangganan peristiwa yang diubah fokus, sumber yang diteruskan ke Anda AutomationFocusChangedEventHandler adalah elemen yang menerima fokus.
Untuk informasi selengkapnya, lihat Berlangganan Peristiwa Automasi UI.
Dari Titik
Jika Anda memiliki koordinat layar (misalnya, posisi kursor), Anda dapat mengambil AutomationElement dengan menggunakan metode statis FromPoint .
Dari Pegangan Jendela
Untuk mengambil AutomationElement dari HWND, gunakan metode statis FromHandle .
Dari Kontrol Terfokus
Anda dapat mengambil AutomationElement yang mewakili kontrol terfokus dari properti statis FocusedElement .