29 A.06.01.e

29.1 Kompatibilität

Das Binärformat hat sich geändert. Binärdateien müssen neu generiert werden.

29.2 Windows

12701: Beim Schließen eines Fensters mit überschriebener :set-Methode kommt es nicht mehr zu einem Assfail. Das Problem trat auf, wenn die :set-Methode beim Sichtbarmachen des Fensters aufgerufen wurde, beim Unsichtbarmachen aber nicht (zum Beispiel durch Klick auf das Schließen-Symbol in der Titelleiste).

12668 (keine Änderung): Das Treeview-Control unter Windows stellt maximal 256 Hierarchiestufen dar.

Hinweis zum Treeview-Objekt und .level-Attribut

Das Microsoft Windows Treeview-Control rückt maximal 256 Hierarchiestufen ein. Die 257. Stufe erscheint dann wieder ganz vorne im Treeview-Objekt. Dies wiederholt sich alle 256 Stufen. Die Funktionalität ist davon nicht betroffen, lediglich die Darstellung.

Das Problem wurde in allen Windows-Versionen (einschließlich Windows 10) festgestellt.

29.3 Qt

12712: Die Option opt_auto_close am Fenster wird nun auch für Qt unterstützt. Beim Schließen des Fensters wird nur das close-Ereignis erzeugt ohne das Fenster unsichtbar zu schalten.

29.4 Kern

12694: Es kommt zu keiner fehlerhaften Parameterprüfung mehr, wenn man Regeln aufruft unter Ausnutzung von Defaultwerten, bei denen der Rückgabewert wiederum Parameter eines erneuten Regelaufrufs ist. Zusätzlich wird nun die Gültigkeitsprüfung des Defaultwertes direkt beim Laden ausgeführt.

12691: Beim Löschen eines Attributs wird nun nicht mehr über allokierte Speicherbereiche hinaus geschrieben und kein ungültiger Heap bzw. ungültige Speicherverwaltung hinterlassen.

12687: Beim Binärschreiben eines Tablefields mit gesetztem .rowheader oder .colheader kommt es nicht mehr zum Überschreiben von .content[I,J]-Strings des Headers mit Strings nach dem Header (.field[I,J]).

12678: Wenn ein Attribut an einer Instanz gelöscht wird, werden bei der Berechnung von .itemorder nun geerbte Attribute berücksichtigt. Auf lokal gesetzte Attribute wird nun geachtet, um das Attribut an der richtigen Stelle der Ordnung wegzunehmen.

12676: Der IDM Builder Prozess bricht nun auch im zweiten Lauf bei Fehlern konsistent ab.

12637: Bei Regeln unterhalb von exportierten Objekten kommt es nicht mehr zu Fehlern bei der statischen Überprüfung des Gültigkeitsbereichs.

29.5 Unterstützung von Microsoft UI Automation

Verfügbarkeit

Nur IDM für Windows

UI Automation (im Folgenden meist mit UIA abgekürzt) ist ein Framework von Microsoft um die Barrierefreiheit (Accessibility) und das automatisierte Testen von Benutzeroberflächen zu ermöglichen.

Der Fokus bei der Erweiterung des IDM liegt dabei auf der Bereitstellung der Infrastruktur für das automatisierte Testen.

Es macht dabei die Oberflächenelemente (UIA Elements) in einer Baumstruktur zugänglich. Wobei ein UIA Element Eigenschaften (Properties) aufweist, abhängig auch von seinem Typ (UIA Control Type). UIA Elemente können außerdem mehrere Steuerungsmuster (UIA Control Patterns) aufweisen, welche zusätzliche Eigenschaften oder Interaktionsmöglichkeiten (UIA Control Pattern Methods) bieten. Ereignisse zeigen dabei an, ob sich an einem UIA Element Änderungen ergeben haben.

Diese Dokumentation dient dazu, die Funktionalität des IDM bezüglich der UI Automation Unterstützung kenntlich zu machen und ist weitestgehend nur für Entwickler von UI Automation Clients interessant. Es stellt keine Programmierdokumentation dar, sondern dokumentiert lediglich die Unterstützung durch den IDM. Für die Nutzung von UI Automation sei auf die Microsoft-Dokumentation verwiesen.

29.5.1 Zuordnung von IDM-Objektklassen zu UIA Control Types

Der IDM hat als ein Designprinzip die Verwendung der vom System bzw. Toolkit bereitgestellten Objektklassen (Controls, Widgets) um die Oberflächenobjekte zu implementieren und damit Bedienung und Aussehen möglichst konform zum System zu halten.

Eine Vielzahl von IDM-Objektklassen werden durch den UI Automation Support for Standard Controls von Microsoft abgedeckt. Der IDM ergänzt wenn möglich und erforderlich noch die notwendigen Eigenschaften.

Im Hinblick auf die UI Automation Unterstützung im IDM lassen sich folgende Kategorien unterschieden:

D

Besondere Objektklassen können nicht mit einer zusätzlichen UIA-Unterstützung durch den IDM ausgestattet werden, verfügen aber durch die Microsoft-Default-Implementierung über eine ausreichende Unterstützung. Dazu zählen z.B. menubox, menuitem, menusep, messagebox und filereq.

E

Die meisten dieser Objektklassen erhalten ergänzende UIA-Unterstützung durch den IDM, insbesondere um deren Identifikation zu erleichtern.

X

Vom IDM eigenimplementierte Objektklassen bzw. Objektklassen mit unzureichender Microsoft-Default-Implementierung erhalten eine eigene UIA-Unterstützung. Das sind hauptsächlich die Objektklassen image, tablefield, splitbox, layoutbox, progressbar, poptext und toolbar.

U

Für besondere Objektklassen wie control, canvas und USW-Objekte obliegt die UIA-Unterstützung dem Anwendungsprogrammierer bzw. Objekt-Implemetierer.

Die folgende Tabelle soll einen Anhaltspunkt für die Zuordnung der IDM-Objektklassen zu UIA Control Types liefern sowie der bereitgestellten Funktionalität durch die Pattern-Zugehörigkeit:

Kategorie

IDM-Objektklasse

UIA Control Type

Unterstützte UIA Control Patterns

U

canvas

Pane

Ist vom Canvas-Programmierer zu implementieren

E

checkbox

CheckBox

Toggle, Invoke

U

control

Pane

Ist vom OLE/Control-Objekt abhängig

E

edittext

Edit

Systemabhängigtypischerweise Value, Text, Text2

Multiline-Texte mit Scrollbars haben meist noch das Scroll-Pattern

E

edittext mit
.options[opt_rf] = true

Document

Systemabhängigtypischerweise Value, Text, Text2

D

filereq

Window

Systemabhängig

X

groupbox

Pane

Kind: Group

Invoke, Scroll (bei virtuellen Bereichen)

X

image

Button

Kinder: Text, Image
(wenn vorhanden)

Invoke, Toggle

X

layoutbox

Pane

Scroll (bei virtuellen Bereichen)

E

listbox

List

Kinder: ListItem

Scroll, Selection, Invoke

D

menubox

Menu

ExpandCollapse

D

menuitem

MenuItem

Toggle, Invoke, ExpandCollapse, SelectionItem – abhängig vom .style-Attribut

D

menusep

Separator

D

messagebox

Window

Systemabhängig

E

notebook

Tab

Selection

E

notepage

TabItem/Pane

SelectionItem

X

poptext

ComboBox

Kinder: Edit, List, Text
(entsprechend dem .style)

ExpandCollapse, Value sowie Selection – abhängig vom .style-Attribut

X

progressbar

ProgressBar

RangeValue

X

pushbutton

Button

Invoke

E

radiobutton

RadioButton

SelectionItem

X

rectangle

Button

Invoke

X

scrollbar

ScrollBar

RangeValue

X

scrollbar (Slider)

Slider

RangeValue

X

spinbox

Spinner

RangeValue, Value, Selection – abhängig vom .style-Attribut

X

splitbox

Pane

Kinder: Pane

Sichtbare Split-Bereiche sind Sub-Panes mit Transform-Pattern

X

statictext (insensitiv)

Text

Text

X

statictext (sensitiv)

Button

Invoke

E

statusbar

StatusBar

X

tablefield

Table

Kinder: ListItem

Grid, Table, GridItem, TableItem, Invoke, Scroll, Selection

X

toolbar

ToolBar

Dock, Transform, Window (abhängig vom .docking-Attribut), Invoke

E

treeview

Tree

Scroll, Selection

E

window

Window

Window, Transform

Änderungen an der UI Automation Unterstützung können durch Microsoft jederzeit erfolgen, sodass bezüglich den Zuordnungen zu UIA-ControlTypes, Patterns, Properties und Events jederzeit Änderungen möglich sind.

29.5.2 Unterstützte UIA Properties und Control Pattern Methoden

Grundsätzlich sind die Properties, Methoden und Funktionalität durch die UI Automation Specification vorgegeben. Dieses Kapitel hat also eher einen informativen Charakter um den Zusammenhang mit dem IDM herzustellen.

UIA Property/Method

IDM-Attribut

Bemerkungen

AcceleratorKey

.accelerator

Die Tastenkombination des Accelerators wird geliefert.

AccessKey

.text

Der Mnemonic-Buchstabe im Text wird zurückgeliefert, beispielsweise "Alt+B" für .text "&Bearbeiten".

AutomationId

.label, .acc_label

.acc_label genießt, wenn gesetzt, Vorrang vor .label. Der .label wird unter Umständen ergänzt durch die Nummerierung :[<I>] um eine eindeutige Identifikation auf Geschwisterebene zu erreichen.

BoundingRectangle

.x, .y
.width, .height
.xauto, .yauto

Position und Größe des Objekts.

ClassName

Achtung

Systemnamen oder IDM-spezifische Namen die sich von Version zu Version ändern können und keine 1:1-Korrelation mit der IDM-Objektklasse besitzen.

ClickablePoint

Punkt innerhalb des BoundingRectangle zur Ausführung eines Mausklicks.

ControlType

.class
(und anderen Attributen wie
.options, .style, .arrows)

Die Umsetzung auf einen UIA Control Type hängt nicht nur von der Objektklasse ab, sondern unter Umständen von zusätzlichen Objektattributen.

FrameworkId

Wird von der UIA-Implementierung von Microsoft geliefert.

HasKeyboardFocus

.focus

Gibt wieder, ob das Objekt den Tastaturfokus besitzt.

HelpText

.toolhelp bzw. .statushelp

Falls kein Hilfetext in .toolhelp gesetzt wurde, wird .statushelp zurückgeliefert.

IsEnabled

.sensitive bzw. .real_sensitive

Liefert die Bedienbarkeit bzw. Sensitivität des UIA Elements.

IsKeyboardFocusable

Objekt ist sensitiv und kann den Tastaturfokus erhalten.

IsOffscreen

 

UIA Element ist sichtbar, kann aber durch darüberliegende Fenster oder Elemente verdeckt sein.

IsPassword

.format

Ein Format mit verdeckter Formatierung (Formatstring beginnt mit S) liefert für diese Property true zurück.

LocalizedControlType

Wird von der UIA-Implementierung von Microsoft geliefert.

LabeledBy

Ist dem IDM-Objekt ein insensitiver Statictext vorangestellt, wird das zugehörige UIA Element geliefert.

Name

.text, .title, .acc_text

Bei Unterstrukturen (Listbox, Treeview, Content) oft auch
.content, .content[I], .content[R,C]

Der Name des UIA Elements. Kann durch das Attribut .acc_text überschrieben werden.

NativeWindowHandle

AT_WinHandle

Entspricht meist dem HWND den DM_GetToolkitData() auf AT_WinHandle zurückliefert.

Usually the same as the HWND that DM_GetToolkitData() returns for AT_WinHandle.

Orientation

.direction, .docking

Für IDM-Objektklassen wie splitbox, scrollbar, toolbar und tablefield wird hier die korrespondierende Ausrichtung geliefert.

OrientationType_Horizontal

.direction = 2

OrientationType_Vertical

.direction = 1

OrientationType_Horizontal

.docking = dock_<up|down|window>

OrientationType_Vertical

.docking = dock_<left|right>

ProcessId

Wird von der UIA-Implementierung von Microsoft geliefert.

ProviderDescription

Wird von der UIA-Implementierung von Microsoft geliefert.

RuntimeId

Wird meist von der UIA-Implementierung von Microsoft geliefert.

29.5.2.1 Value Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

ValueIsReadOnly

.editable
.editable[R,C]

Eingabefeld oder Tabellenzelle ist editierbar.

Eine Listbox liefert hier immer true.

Value

.content
.content[I]
.content[R,C]

Liefert den (formatierten) Inhalt eines Eingabefelds, Poptext-, Treeview- oder Listbox-Elements oder einer Tabellenzelle.

SetValue()

.content
.content[I]
.content[R,C]

Verändert den Wert des Eingabefelds oder der Tabellenzelle.

29.5.2.2 RangeValue Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

ValueIsReadOnly

Range-Wert ist über SetValue() veränderbar.

Value

.curvalue

Range-Wert einer Spinbox oder Scrollbar.

Minimum

.minvalue

Untere Range-Grenze.

Maximum

.maxvalue

Obere Range-Grenze.

SetValue()

Verändert den Range-Wert.

29.5.2.3 Scroll Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

HorizontallyScrollable

Horizontales Scrollen ist möglich.

HorizonalScrollPercent

Errechneter Wert aus .vwidth und realer Breite in %.

HorizontalViewSize

Errechneter Wert aus .vwidth und realer Breite in %.

VerticallyScrollable

Vertikales Scrollen ist möglich.

VericalScrollPercent

Errechneter Wert aus .vheight und realer Höhe in %.

VericalViewSize

Errechneter Wert aus .vheight und realer Höhe in %.

Scroll()

Scrollt relativ.

SetScrollPercent()

Scrollt zu einer bestimmten %-Position.

29.5.2.4 ScrollItem Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

ScrollIntoView()

Scrollt das Element in den sichtbaren Bereich.

29.5.2.5 Transform Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

CanMove

.moveable

Fenster bzw. Toolbar kann verschoben werden.

CanResize

.sizeable

Fenster bzw. Toolbar kann verkleinert und vergrößert werden.

Oder der Splibox-Bereich kann verkleinert und vergrößert werden.

CanRotate

Nicht vom IDM abgedeckt.

Move()

Erlaubt die Verschiebung eines Fensters oder einer Toolbar.

Resize()

Erlaubt die Verkleinerung und Vergrößerung eines Fensters, Toolbar oder Splitbox-Bereichs.

Rotate()

29.5.2.6 Grid Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

ColumnCount

.colcount

Liefert die Anzahl der sichtbaren Spalten einer Tabelle.

RowCount

.rowcount

Liefert die Anzahl der sichtbaren Zeilen einer Tabelle.

GetItem()

Liefert das UIA Element einer Zelle.

29.5.2.7 GridItem Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

GridItemColumn

Spaltenindex (ab 0 und ohne unsichtbare Spalten).

GridItemColumnSpan

Ist immer 1 da im IDM keine Zellen zusammengefasst werden können.

GridItemRowCount

Zeilenindex (ab 0 und ohne unsichtbare Zeilen).

GridItemRowSpan

Ist immer 1 da im IDM keine Zellen zusammengefasst werden können.

29.5.2.8 Selection Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

SelectionCanSelectMultiple

.multisel
.selstyle
.selection[]

Listboxen und Tabellen können eine Mehrfachselektion erlauben.

SelectionIsRequired

Ist eine Selektion erforderlich?

GetSelection()

Liefert die selektierten UIA Elemente.

29.5.2.9 SelectionItem Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

SelectionItemIsSelected

.active
.activeitem

Liefert true für ein aktives Element.

AddToSelection()

Fügt ein Element zu einer Mehrfachselektion hinzu.

RemoveFromSelect()

Entfernt ein selektiertes Element aus einer Mehrfachselektion.

Select()

Selektiert dieses Element.

29.5.2.10 Toggle Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

ToggleState

.active
.state

Aktivierung bzw. Zustand einer Checkbox, Image-Objekts oder Menuitem im checkbox-Stil.

Toggle()

Schaltet die Zustände zwischen checked, unchecked und indeterminate um.

29.5.2.11 ExpandCollapse Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

ExpandCollapseState

.open (Treeview)

Collapse()

Schließen eines Unterbaums.

Expand()

Öffnen eines Unterbaums.

29.5.2.12 Window Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

CanMinimize

.iconifyable

Fenster kann minimiert werden.

CanMaximize

.maximizable

Fenster kann maximiert werden.

IsTopmost

.top_most

Fenster ist immer vor allen anderen Fenstern.

WindowIsModal

.dialogbox

Fenster mit .dialogbox = true sind modale Fenster.

WindowInteractionState

WindowVisualState

Zustand des Fensters (minimiert, maximiert usw.).

Close()

Schließt das Fenster.

SetWindowVisualState()

Erlaubt es, das Fenster zu minimieren oder zu maximieren.

WaitForInputIdle()

29.5.2.13 Dock Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

DockDockPosition

.docking

Liefert die Docking-Position einer Toolbar.

SetDockPosition()

Kann zum Umdocken einer Toolbar verwendet werden.

29.5.2.14 Table Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

TableRowOrColumnMajor

.direction

Zeigt die Ausrichtung der Tabelle an.

GetColumnHeaders()

Liefert die UIA Elemente der sichtbaren Spalten-Header-Zellen.

GetRowHeaders()

Liefert die UIA Elemente der sichtbaren Zeilen-Header-Zellen.

29.5.2.15 TableItem Pattern

UIA Property/Method

IDM-Attribut

Bemerkungen

GetColumnHeaderItems()

Liefert die zugehörigen UIA Elemente im Header-Bereich [row,1] … [row,.colheader] der Tabelle.

GetRowHeaderItems()

Liefert die zugehörigen UIA Elemente im Header-Bereich [1,col] … [.rowheader,col] der Tabelle.

29.5.3 UIA Objektidentifikation

Die von UI Automation definierten Schlüssel-Properties für die Identifikation von UIA Elementen sind AutomationId, Name, ControlType und RuntimeId.

Um eine möglichst konsistente und sprachunabhängige Identifikation zu ermöglichen, wird deshalb bei den meisten IDM-Objekten der IDM Objekt-Label als AutomationId vergeben. Bei Mehrdeutigkeiten erfolgen bei geerbten Bezeichnern noch die IDM-typische Indizierung :[<Nr>] nach dem Label für Nr >= 2. Über das .acc_label-Attribut kann die AutomationId überschrieben werden. Dann hat allerdings der Anwendungsprogrammierer für die Eindeutigkeit zu sorgen.

Oft wird auch die Name-Property herangezogen, welche typischerweise den sichtbaren statischen Text-String (also nicht dem dynamischen Inhalt) widerspiegelt. Auch dies ist vom Anwendungsprogrammierer überschreibbar durch das .acc_text-Attribut.

In einem UI Automation Element Tree sind durch diese Properties damit Objekte meist eindeutig identifizierbar.

Die RuntimeId basiert im allgemeinen auf dem Window-Handle und kann sich somit auch bei Attributänderungen ändern. Sie eignet sich somit weniger für eine stabile Objektidentifikation.

29.5.4 Besonderheiten

29.5.4.1 Edittext

Für die Änderung des Textes ist die Methode SetValue() des Value Pattern zu benutzen. Dies führt zu einem charinput-Ereignis im IDM. Das modified-Ereignis um eine Änderung zu signalisieren wird allerdings erst versendet, wenn der Edittext den Fokus verliert. Konsistenter mit einer normalen Bedienung ist die Simulation von Tastatureingaben. Generell sollte der Fokus über die SetFocus()-Methode von UIA auf das Eingabefeld gelenkt werden.

29.5.4.2 Poptext

Neben der üblichen Methodik, die Selektion über die Select()-Methode des SelectionItem Patterns zu verändern, kann ebenso die Methode SetValue() des Value Patterns benutzt werden. Handelt es sich dabei um einen editierbaren Poptext, so wird, falls der Wert in der Poptext-Liste aufgeführt ist, eine Selektion vorgenommen und die entsprechenden select- und activate-Ereignisse erzeugt. Andernfalls wird der Inhalt des Editierbereichs umgesetzt und die Ereignisse charinput und modified ausgelöst.

29.5.4.3 Formatierte Eingabe

Wird bei einem Eingabefeld ein Format verwendet, so liefern Text und Value immer den Darstellungstext inklusive Formatierungszeichen. Ein Zugriff auf den Inhalt von Passwortfeldern bei einem verdeckten Format ist somit nicht möglich. Eine vollständige Änderung sollte ebenso über die SetValue()-Methode erfolgen und darf keine Formatierungszeichen beinhalten. Ansonsten sollten Testwerkzeuge die Simulation der Tastatureingaben durchführen.

29.5.4.4 Client-Bereich

IDM-Objektklassen können aus mehreren UIA Elementen bestehen. Gruppierungsobjekte haben typischerweise ein übergeordnetes Element und einen Client-Bereich, welcher den Suffix #client als AutomationId bekommt.

29.5.4.5 Virtuelle Bereiche

Gruppierungsobjekte erhalten einen virtuellem Bereich und optionale Scrollbars durch Setzen der Attribute .vwidth und .vheight. Das Client UIA Element erhält dann zusätzlich das Control Pattern Scroll und ScrollItem an den Kind-Objekten um so die Änderung des sichtbaren Bereichs und das Scrolling eines Kindes in den sichtbaren Bereich zu ermöglichen.

Durch die UIA-Methoden Scroll() bzw. ScrollIntoView() ist die Kontrolle über den angezeigten Ausschnitt möglich. Eine Scrolling-Kontrolle über die innen liegenden ScrollBar UIA Elemente ist nicht möglich.

29.5.4.6 Splitbox

Die einzelnen sichtbaren Bereiche sind als UIA-Kind-Elemente vom Typ Pane mit Namenssuffix #client[1]#client[n] erreichbar und können durch die Resize() Control Pattern Methode in ihrer Größe geändert werden.

29.5.4.7 Menüs

Menüs in der Menüleiste wie auch Popup-Menüs sind nicht vom IDM überdefiniert sondern durch die Standard-Implementierung von Windows abgedeckt. Typischerweise sind die UIA Elemente der Menüs, Untermenüs und Menüeinträge erst beim Öffnen zugänglich. Kontextmenüs sind dabei unterhalb des Desktop UIA Elements eingeordnet. Die Menüs von Menüleisten liegen nach dem Öffnen direkt unter dem UIA Window Element.

29.5.4.8 Messagebox und Filereq

Beim querybox()-Aufruf werden diese durch Standard-Controls aufgebaut und sind typischerweise als UIA Control Type Dialog oder Window mit dem gesetzten Fenstertitel zu finden.

29.5.4.9 Image-Objekt

Um eine Erkennung des dargestellten Bildes zu erlauben, wird das Image-Objekt in UI Automation durch das UI Element Button mit den Kind-Elementen Image und Text repräsentiert. Das Image-Element erhält, wenn vorhanden, den Alternativtext der verwendeten Tile-Ressource in der UIA Name Property.

29.5.4.10 Toolbar-Objekt

Eine eingedockte Toolbar besitzt kein Transform Pattern, kann also nicht in Größe und Position variiert werden.

29.5.4.11 Treeview-Objekt

Eine erneute Selektion des gleichen Elements, über die Select()-Methode des SelectionItem Pattern, erzeugt kein erneutes select-Ereignis.

29.5.4.12 Benutzerinteraktion vs. Automatisierung

Die Funktionalität zur Automatisierung einer Benutzeroberfläche, die durch UI Automation möglich ist, deckt nicht alle Möglichkeiten ab, die einem Benutzer durch die Bedienung mit Maus und Tastatur gegeben sind.

Grundsätzlich ist zu sagen, dass sich Benutzerinteraktion und Automatisierung bei den möglichen Aktionen, der Atomarität wie auch den Zustandsabhängigkeiten unterscheiden.

29.5.5 Hinweise zu HP UFT 12.52

Das Testwerkzeug HP Unified Functional Testing (UFT) bietet ab Version 12.52 eine Unterstützung für das Testen von UI Automation. Dabei weist UFT aber keine vollständige Unterstützung für alle UIA Control Types auf, sondern beschränkt sich auf die wichtigsten Control Types und Control Patterns. Dieses Kapitel ist also lediglich informativer Art und sollte keinen Blick in die UFT-Dokumentation ersetzen.

Die Unterstützung von UIA (UI Automation) durch UFT lässt sich wie folgt beschreiben:

Dies bedeutet, dass nicht alle IDM-Objektklassen unterscheidbar als Testobjekte mit eigener UIA-Klasse von UFT erkannt werden. Dazu gehören die IDM-Objektklassen:

Allerdings sollten diese von UFT als allgemeines UIAObject erkannt werden und durch die unterstützten Pattern-Methoden hinreichend test- und manipulierbar sein.

Es sei angemerkt, dass Microsoft mit UI Automation zwar die Bereiche Accessiblity und Test Automation abdeckt, allerdings keine vollständige und korrekte Erfassung von Benutzerinteraktion ermöglicht. Insofern ist ein Recording der Benutzerinteraktion durch UFT im UI Automation Modus oft unvollständig und unter Umständen auch fehlerbehaftet.

Dies zeigt sich z.B. beim Recording einer Menüinteraktion auf einem Untermenü. UFT generiert das folgende, nicht funktionsfähige Skript, welche keinen Click auf das Menü enthält:

UIAWindow("Hauptfenster").UIAMenu("Anwendungsmenü").UIAObject("Datei").Expand
UIAWindow("Hauptfenster").UIAMenu("Datei").UIAObject("Untermenü").Expand

Ein funktionierendes Skript würde hingegen wie folgt aussehen:

UIAWindow("Hauptfenster").UIAMenu("Anwendungsmenü").UIAObject("Datei").Click
UIAWindow("Hauptfenster").UIAMenu("Datei").UIAObject("Untermenü").Click
UIAWindow("Hauptfenster").UIAMenu("Datei").Select "Untermenü;Menü A"

Beim Recording im Windows-Modus erhält man etwa folgendes funktionstüchtiges Skript:

Window("Hauptfenster").WinMenu("Datei").Select "Datei;Untermenü;Menü A"

29.5.6 Erweiterung zur C-Schnittstelle

Die Funktionen DM_Control() und DM_ControlEx() wurden um eine zusätzliche Aktion ergänzt. Standardmäßig ist die Unterstützung von UI Automation aktiv. Mit dieser Aktion kann die spezielle Unterstützung des IDM für seine besonderen Objekte abgeschaltet werden. Weiterhin aktiv bleibt aber die UI Automation Unterstützung von Microsoft für die Standard Controls.

Die Umschaltung muss dabei vor dem Aufruf von DM_Initialize() und nach dem Bootstrapping erfolgen. Ein erfolgreiche Umsetzung wir mit der Rückgabe von DM_TRUE angezeigt.

Aktion

Argument

DMF_UIAutomationMode

0 deaktiviert oder

1 aktiviert den UI Automation Support des IDM

29.5.7 Attribut .acc_text

 

Bezeichner

Datentyp

Regelsprache

.acc_text

object, string

C

AT_acc_text

DT_Text, DT_String

COBOL

AT-acc-text

DT-Text, DT-String

Klassifizierung

Standardattribut

Zugriff

get, set

Standardwert

null

changed-Ereignis

ja

Vererbung

ja

Mit diesem Attribut kann der Automation-Name überschieben werden, der für ein Oberflächenobjekt über die Microsoft UIA-Schnittstelle vom IDM erfragt wird. Bei einem Wert von null wird der Name normalerweise vom Windows Control bzw. durch die UIA-Unterstützung im IDM sinnvoll vorgegeben.

Unterstützung des Attributs durch Objekte

Objekt

Unterstützung des Attributs

filereq, messagebox

Attribut hat keine Auswirkung

menubox, menuitem, menusep

canvas, spinbox, statusbar, tablefield

Attribut wird unterstützt

groupbox, notebook, notepage, splitbox

image, layoutbox, window

rectangle, scrollbar

checkbox, pushbutton, radiobutton

edittext, poptext, statictext

control, listbox, treeview

andere Objektklassen

Attribut wird nicht unterstützt

Anmerkung

Dieses Attribut ist nur für die automatisierte Fremdsteuerung mit aktiver Microsoft UIA-Unterstützung relevant. Unter Qt und Motif hat dieses Attribut keine Funktion.

29.5.8 Attribut .acc_label

 

Bezeichner

Datentyp

Regelsprache

.acc_label

object, string

C

AT_acc_label

DT_Text, DT_String

COBOL

AT-acc-label

DT-Text, DT-String

Klassifizierung

Standardattribut

Zugriff

get, set

Standardwert

""

changed-Ereignis

ja

Vererbung

ja

Mit diesem Attribut kann der Automation-Identifikator überschieben werden, der für ein Oberflächenobjekt über die Microsoft UIA-Schnittstelle vom IDM erfragt wird. Bei einem leeren String wird der Automation-Identifikator normalerweise vom Windows Control bzw. durch die UIA-Unterstützung im IDM sinnvoll vorgegeben.

Unterstützung des Attributs durch Objekte

Objekt

Unterstützung des Attributs

filereq, messagebox

Attribut hat keine Auswirkung

menubox, menuitem, menusep

canvas, spinbox, statusbar, tablefield

Attribut wird unterstützt

groupbox, notebook, notepage, splitbox

image, layoutbox, window

rectangle, scrollbar

checkbox, pushbutton, radiobutton

edittext, poptext, statictext

control, listbox, treeview

andere Objektklassen

Attribut wird nicht unterstützt

Anmerkung

Dieses Attribut ist nur für die automatisierte Fremdsteuerung mit aktiver Microsoft UIA-Unterstützung relevant. Unter Qt und Motif hat dieses Attribut keine Funktion.

Bei einer Überschreibung sollten die Regeln beachtet werden, welche in der Microsoft UI Automation Dokumentation für die AutomationId vorgegeben sind.

29.5.9 Erweiterung der Tile-Ressource

Für den Zugang zu IDM-Oberflächenobjekten über die UI-Automation Schnittstelle unter Microsoft Windows wurde die Tile-Ressource ergänzt. Image-Objekte, welche eine Tile-Ressource als Bild (Muster) nutzen, erhalten einen Alternativtext um die Automatisierung und Zugänglichkeit (Accessibility) zu erleichtern.

Dieser Alternativtext in kann dabei wie folgt angegeben werden:

{ export | reexport } tile  <Bezeichner>  <x>, <y>,
      <Tilestring1>
  [ , <Tilestring> ]
{ scale } { text(<Alternativtext>) };

{ export | reexport } tile  <Bezeichner>  <Dateiname>
{ scale } { text(<Alternativtext>) }; <Alternativtext> := ( <String> | <Text-Objektpfad> )

Beispiele

text TxPause "Pause"
{
  2: "Break";
}
tile TiCoffeeBreak "kaffeetasse.gif" text("Pause");
tile TiCoffeeBreak "kaffeetasse.gif" text(TxPause);

29.5.10 Erweiterung des Tracing

Um eine Trace-Ausgabe der UIA-Schnittstelle des IDM für Windows zu aktivieren, muss das UI Automation Tracing explizit (zum Beispiel in der on dialog start Regel) eingeschaltet werden:

setup.tracing["AU"] ::= true;  /* "AU" = Automation */