Översikt över textmönster och inbäddade objekt
Kommentar
Den här dokumentationen System.Windows.Automation är avsedd för .NET Framework-utvecklare som vill använda de hanterade UI Automation-klasserna som definierats i namnområdet. Den senaste informationen om UI Automation finns i Windows Automation API: UI Automation.
Den här översikten beskriver hur Microsoft UI Automation exponerar inbäddade objekt eller underordnade element i ett textdokument eller en container.
I UI Automation är ett inbäddat objekt alla element som har icke-textgränser. Till exempel en bild, hyperlänk, tabell eller dokumenttyp, till exempel ett Microsoft Excel-kalkylblad eller En Microsoft Windows Media-fil. Detta skiljer sig från standarddefinitionen, där ett element skapas i ett program och bäddas in eller länkas inom ett annat. Om objektet kan redigeras i det ursprungliga programmet är irrelevant i kontexten för UI Automation.
Inbäddade objekt och UI Automation-trädet
Inbäddade objekt behandlas som enskilda element i kontrollvyn i UI Automation-trädet. De exponeras som underordnade i textcontainern så att de kan nås via samma modell som andra kontroller i UI Automation.
Exempel på en textcontainer med inbäddade tabell-, bild- och hyperlänkobjekt
Exempel på innehållsvyn för en del av föregående textcontainer
Exponera inbäddade objekt med hjälp av TextPattern och TextPatternRange
Kontrollmönsterklassen TextPatternTextPatternRange och klassen används tillsammans och exponerar metoder och egenskaper som underlättar navigering och frågekörning av inbäddade objekt.
Textinnehållet (eller den inre texten) i en textcontainer och ett inbäddat objekt, till exempel en hyperlänk eller tabellcell, exponeras som en enda kontinuerlig textström i både kontrollvyn och innehållsvyn i UI Automation-trädet. objektgränser ignoreras. Om en UI Automation-klient hämtar texten i syfte att recitera, tolka eller analysera på något sätt, bör textintervallet kontrolleras för särskilda fall, till exempel en tabell med textinnehåll eller andra inbäddade objekt. Detta kan åstadkommas genom att anropa GetChildren för att hämta ett AutomationElement för varje inbäddat objekt och sedan anropa RangeFromChild för att hämta ett textintervall för varje element. Detta görs rekursivt tills allt textinnehåll har hämtats.
Exempel på en textström med inbäddade objekt och deras intervallintervall
När det är nödvändigt att bläddra igenom innehållet i ett textintervall är en serie steg inblandade i bakgrunden för Move att metoden ska kunna köras korrekt.
Textområdet normaliseras. Det innebär att textintervallet minimeras till ett degenererat intervall vid Start slutpunkten, vilket gör End slutpunkten överflödig. Det här steget är nödvändigt för att ta bort tvetydighet i situationer där ett textintervall sträcker sig över TextUnit gränser: till exempel
{The URL https://www.microsoft.com is embedded in text
där "{" och "}" är slutpunkterna för textintervallet.Det resulterande intervallet flyttas bakåt i DocumentRange början av den begärda TextUnit gränsen.
Intervallet flyttas framåt eller bakåt i det DocumentRange begärda antalet TextUnit gränser.
Intervallet expanderas sedan från ett degenererat intervalltillstånd genom att slutpunkten flyttas End med en begärd TextUnit gräns.
Exempel på hur ett textintervall justeras för Move() och ExpandToEnclosingUnit()
Vanliga scenarier
Följande avsnitt innehåller exempel på de vanligaste scenarierna som omfattar inbäddade objekt.
Förklaring för exemplen som visas:
{ = Start
} = End
Hyperlänk
Exempel 1 – Ett textintervall som innehåller en inbäddad textlänk
{The URL https://www.microsoft.com is embedded in text}.
Metod som heter | Result |
---|---|
GetText | Returnerar strängen The URL https://www.microsoft.com is embedded in text . |
GetEnclosingElement | Returnerar det innersta AutomationElement som omger textområdet. I det här fallet AutomationElement representerar det textprovidern. |
GetChildren | Returnerar en AutomationElement som representerar hyperlänkkontrollen. |
RangeFromChild där AutomationElement returneras objektet av föregående GetChildren metod. |
Returnerar intervallet som representerar https://www.microsoft.com . |
Exempel 2 – Ett textintervall som delvis sträcker sig över en inbäddad texthyperlänk
URL:en https://{[www]}
är inbäddad i text.
Metod som heter | Result |
---|---|
GetText | Returnerar strängen "www". |
GetEnclosingElement | Returnerar det innersta AutomationElement som omger textområdet. I det här fallet hyperlänkkontrollen. |
GetChildren | Returnerar null eftersom textområdet inte sträcker sig över hela URL-strängen. |
Exempel 3 – Ett textintervall som delvis sträcker sig över innehållet i en textcontainer. Textcontainern har en inbäddad texthyperlänk som inte ingår i textområdet.
{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.
Metod som heter | Result |
---|---|
GetText | Returnerar strängen "URL:en". |
GetEnclosingElement | Returnerar det innersta AutomationElement som omger textområdet. I det här fallet AutomationElement representerar det textprovidern. |
Move med parametrarna (TextUnit.Word, 1). | Flyttar textintervallet till "http" eftersom texten i hyperlänken består av enskilda ord. I det här fallet behandlas hyperlänken inte som ett enda objekt. URL:en {[http]} är inbäddad i text. |
Bild
Exempel 1 – Ett textintervall som innehåller en inbäddad bild
{Bilden är inbäddad i text}.
Metod som heter | Result |
---|---|
GetText | Returnerar strängen "Är inbäddad i text". Alt-text som är associerad med bilden kan inte förväntas ingå i textströmmen. |
GetEnclosingElement | Returnerar det innersta AutomationElement som omger textområdet. I det här fallet AutomationElement representerar det textprovidern. |
GetChildren | Returnerar en AutomationElement som representerar bildkontrollen. |
RangeFromChild där AutomationElement returneras objektet av föregående GetChildren metod. | Returnerar det degenererade intervallet som representerar "". |
Exempel 2 – Ett textintervall som delvis sträcker sig över innehållet i en textcontainer. Textcontainern har en inbäddad bild som inte ingår i textområdet.
{Bilden} är inbäddad i text.
Metod som heter | Result |
---|---|
GetText | Returnerar strängen "Bilden". |
GetEnclosingElement | Returnerar det innersta AutomationElement som omger textområdet. I det här fallet AutomationElement representerar det textprovidern. |
Move med parametrarna (TextUnit.Word, 1). | Flyttar textintervallet till "is". Eftersom endast textbaserade inbäddade objekt anses vara en del av textströmmen påverkar bilden i det här exemplet inte Flytta eller dess returvärde (1 i det här fallet). |
Register
Tabell som används för exempel
Cell med bild | Cell med text |
---|---|
X | |
Y | |
Bild för Z |
Z |
Exempel 1 – Hämta textcontainern från innehållet i en cell.
Metod som anropas | Result |
---|---|
GetItem med parametrar (0,0) | AutomationElement Returnerar innehållet i tabellcellen. I det här fallet är elementet en textkontroll. |
RangeFromChild där AutomationElement returneras objektet av föregående GetItem metod. |
Returnerar det intervall som sträcker sig över bilden . |
GetEnclosingElement för objektet som returnerades av föregående RangeFromChild metod. |
AutomationElement Returnerar tabellcellen. I det här fallet är elementet en textkontroll som stöder TableItemPattern. |
GetEnclosingElement för objektet som returnerades av föregående GetEnclosingElement metod. |
Returnerar den AutomationElement som representerar tabellen. |
GetEnclosingElement för objektet som returnerades av föregående GetEnclosingElement metod. |
AutomationElement Returnerar den som representerar själva textprovidern. |
Exempel 2 – Hämta textinnehållet i en cell.
Metod som anropas | Result |
---|---|
GetItem med parametrarna (1,1). | AutomationElement Returnerar innehållet i tabellcellen. I det här fallet är elementet en textkontroll. |
RangeFromChild där AutomationElement returneras objektet av föregående GetItem metod. |
Returnerar "Y". |