Bagikan melalui


Gambaran Umum Objek TextPattern dan Sematan

Catatan

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.

Gambaran umum ini menjelaskan bagaimana Microsoft UI Automation mengekspos objek yang disematkan, atau elemen turunan, dalam dokumen teks atau kontainer.

Di Automasi UI, objek yang disematkan adalah elemen apa pun yang memiliki batas non-tekstual; misalnya, gambar, hyperlink, tabel, atau jenis dokumen seperti lembar bentang Microsoft Excel atau file Microsoft Windows Media. Ini berbeda dari definisi standar, di mana elemen dibuat dalam satu aplikasi dan disematkan, atau ditautkan, di dalam aplikasi lain. Apakah objek dapat diedit dalam aplikasi aslinya tidak relevan dalam konteks UI Automation.

Objek Tersemat dan Pohon UI Automation

Objek yang disematkan diperlakukan sebagai elemen individual dalam tampilan kontrol pohon UI Automation. Kontainer tersebut diekspos sebagai turunan dari kontainer teks sehingga dapat diakses melalui model yang sama dengan kontrol lain di UI Automation.

Tabel Yang Disematkan dengan Gambar dalam Kontainer Teks Contoh Kontainer Teks dengan Tabel, Gambar, dan Objek Tersemat Hyperlink

Tampilan konten untuk contoh sebelumnya Contoh Tampilan Konten untuk Sebagian Kontainer Teks Sebelumnya

Mengekspos Objek Tersemat Menggunakan TextPattern dan TextPatternRange

Digunakan bersama, kelas pola kontrol TextPattern dan kelas TextPatternRange mengekspos metode dan properti yang memfasilitasi navigasi dan kueri objek yang disematkan.

Konten tekstual (atau teks dalam) kontainer teks dan objek yang disematkan, seperti hyperlink atau sel tabel, diekspos sebagai aliran teks berkelanjutan tunggal dalam tampilan kontrol dan tampilan konten pohon Automation UI; batas objek diabaikan. Jika klien UI Automation mengambil teks untuk tujuan membalas, menginterpretasikan, atau menganalisis dengan cara tertentu, rentang teks harus diperiksa untuk kasus khusus, seperti tabel dengan konten tekstual atau objek tersemat lainnya. Ini dapat dicapai dengan memanggil GetChildren untuk mendapatkan AutomationElement untuk setiap objek yang disematkan dan kemudian memanggil RangeFromChild untuk mendapatkan rentang teks untuk setiap elemen. Ini dilakukan secara rekursif sampai semua konten tekstual diambil.

Rentang teks terbenam oleh objek yang disematkan. Contoh aliran teks dengan objek yang disematkan dan rentang rentangnya

Ketika perlu untuk melintasi konten rentang teks, serangkaian langkah terlibat di belakang layar agar metode Move berhasil dijalankan.

  1. Rentang teks dinormalisasi; yaitu, rentang teks diciutkan menjadi rentang yang merosot di titik akhir Start, yang membuat titik akhir End tidak berguna. Langkah ini diperlukan untuk menghilangkan ambiguitas dalam situasi di mana rentang teks membentang TextUnit batas: misalnya, {The URL https://www.microsoft.com is embedded in text di mana "{" dan "}" adalah titik akhir rentang teks.

  2. Rentang yang dihasilkan dipindahkan ke belakang di DocumentRange ke awal batas TextUnit yang diminta.

  3. Rentang dipindahkan ke depan atau ke belakang di DocumentRange dengan jumlah batas TextUnit yang diminta.

  4. Rentang kemudian diperluas dari status rentang yang merosot dengan memindahkan titik akhir End dengan satu batas TextUnit yang diminta.

Penyesuaian rentang menurut Pindahkan & ExpandToEnclosingUnit Contoh bagaimana rentang teks disesuaikan untuk Move() dan ExpandToEnclosingUnit()

Skenario Umum

Bagian berikut menyajikan contoh skenario paling umum yang melibatkan objek yang disematkan.

Legenda untuk contoh yang ditampilkan:

{ = Start

} = End

Contoh 1 - Rentang teks yang berisi hyperlink teks yang disematkan

{The URL https://www.microsoft.com is embedded in text}.

Metode yang Dipanggil Hasil
GetText Mengembalikan untai (karakter) The URL https://www.microsoft.com is embedded in text.
GetEnclosingElement Mengembalikan AutomationElement terdalam yang melingkupi rentang teks; dalam hal ini, AutomationElement yang mewakili penyedia teks itu sendiri.
GetChildren Mengembalikan AutomationElement yang mewakili kontrol hyperlink.
RangeFromChild di mana AutomationElement adalah objek yang dikembalikan oleh metode GetChildren sebelumnya. Mengembalikan rentang yang mewakili https://www.microsoft.com.

Contoh 2 - Rentang teks yang sebagian mencakup hyperlink teks yang disematkan

URL https://{[www]} disematkan dalam teks.

Metode yang Dipanggil Hasil
GetText Mengembalikan string "www".
GetEnclosingElement Mengembalikan AutomationElement terdalam yang melingkupi rentang teks; dalam hal ini, kontrol hyperlink.
GetChildren Mengembalikan null karena rentang teks tidak menjangkau seluruh string URL.

Contoh 3 - Rentang teks yang sebagian mencakup konten kontainer teks. Kontainer teks memiliki hyperlink teks yang disematkan yang bukan bagian dari rentang teks.

{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.

Metode yang Dipanggil Hasil
GetText Mengembalikan string "URL".
GetEnclosingElement Mengembalikan AutomationElement terdalam yang melingkupi rentang teks; dalam hal ini, AutomationElement yang mewakili penyedia teks itu sendiri.
Move dengan parameter (TextUnit.Word, 1). Memindahkan rentang teks ke "http" karena teks hyperlink terdiri dari kata-kata individual. Dalam hal ini, hyperlink tidak diperlakukan sebagai objek tunggal.

URL {[http]} disematkan dalam teks.

Gambar

Contoh 1 - Rentang teks yang berisi gambar tersemat

{Gambar Contoh Gambar yang Disematkan disematkan dalam teks}.

Metode yang Dipanggil Hasil
GetText Mengembalikan string "Yang disematkan dalam teks". Teks ALT apa pun yang terkait dengan gambar tidak dapat diharapkan disertakan dalam aliran teks.
GetEnclosingElement Mengembalikan AutomationElement terdalam yang melingkupi rentang teks; dalam hal ini, AutomationElement yang mewakili penyedia teks itu sendiri.
GetChildren Mengembalikan AutomationElement yang mewakili kontrol gambar.
RangeFromChild di mana AutomationElement adalah objek yang dikembalikan oleh metode GetChildren sebelumnya. Mengembalikan rentang degenerasi yang mewakili "Contoh Gambar yang Disematkan".

Contoh 2 - Rentang teks yang sebagian mencakup konten kontainer teks. Kontainer teks memiliki gambar yang disematkan yang bukan bagian dari rentang teks.

{Gambar} Contoh Gambar yang Disematkan disematkan dalam teks.

Metode yang Dipanggil Hasil
GetText Mengembalikan string "Gambar".
GetEnclosingElement Mengembalikan AutomationElement terdalam yang melingkupi rentang teks; dalam hal ini, AutomationElement yang mewakili penyedia teks itu sendiri.
Move dengan parameter (TextUnit.Word, 1). Memindahkan rentang teks ke "adalah ". Karena hanya objek tersemat berbasis teks yang dianggap sebagai bagian dari aliran teks, gambar dalam contoh ini tidak memengaruhi Pindahkan atau nilai pengembaliannya (1 dalam hal ini).

Tabel

Tabel yang digunakan untuk contoh

Sel dengan Gambar Sel dengan Teks
Contoh Gambar yang Disematkan X
Contoh Gambar Tersemat 2 Y
Contoh Gambar Tersemat 3

Gambar untuk Z
Z

Contoh 1 - Dapatkan kontainer teks dari konten sel.

Metode yang Dipanggil Hasil
GetItem dengan parameter (0,0) Mengembalikan AutomationElement yang mewakili konten sel tabel; dalam hal ini, elemen adalah kontrol teks.
RangeFromChild di mana AutomationElement adalah objek yang dikembalikan oleh metode GetItem sebelumnya. Mengembalikan rentang yang mencakup gambar Contoh Gambar yang Disematkan.
GetEnclosingElement untuk objek yang dikembalikan oleh metode RangeFromChild sebelumnya. Mengembalikan AutomationElement yang mewakili sel tabel; dalam hal ini, elemennya adalah kontrol teks yang mendukung TableItemPattern.
GetEnclosingElement untuk objek yang dikembalikan oleh metode GetEnclosingElement sebelumnya. Mengembalikan AutomationElement yang mewakili tabel.
GetEnclosingElement untuk objek yang dikembalikan oleh metode GetEnclosingElement sebelumnya. Mengembalikan AutomationElement yang mewakili penyedia teks itu sendiri.

Contoh 2 - Mendapatkan konten teks sel.

Metode yang Dipanggil Hasil
GetItem dengan parameter (1,1). Mengembalikan AutomationElement yang mewakili konten sel tabel; dalam hal ini, elemen adalah kontrol teks.
RangeFromChild di mana AutomationElement adalah objek yang dikembalikan oleh metode GetItem sebelumnya. Mengembalikan "Y".

Lihat juga