Hallo,
Ich mache mit VS2012 und Coded UI Test automatisierte Tests für unsere WPF-Anwendung.
Hierbei ist die Hauptmaske in zwei XAML-Dateien aufgeteilt.
Zum einen die Hauptmaske, das WPF-Window Shell.xaml.
Auf diesem liegt eine TabControl, der im Konstruktor von Shell.xaml programmatisch eine TabPage mit der AutomationID "Workspace" hinzugefügt wird.
Daneben gibt es dann noch das WPF-Control Workspace.xaml, das zur Laufzeit ein Child von der Workspace-Tabpage wird.
Auf diesem XAML liegen (verschachtelt) ein RadExpander (von Telerik), eine ListBox und darin diverse ListBoxItems.
Alle diese Controls sind mit AutomationIds versehen.
Wenn ich nun einen Test aufnehme und auf eines der ListBoxItems klicke, erwarte ich in der UI-Steuerelementzuordnung die folgende Hierarchie:
Window
- TabControl
- TabPage
- RadExpander
- ListBox
- ListBoxItem
Doch eigenartigerweise erhalte ich folgende Hierarchie:
Window
- RadExpander
- ListBox
- ListBoxItem
Dasselbe geschieht auch, wenn ich mit Assertion bestimmte Steuerelemente markiere und mir die Zuordnung ansehe.
Wenn ich den RadExpander - also das erste Control im Workspace.xaml - markiere, stimmt die Zuordnung noch.
Aber ab der ListBox meint Coded Ui Test offenbar, dass der RadExpander direkt auf dem Window liegt und lässt sowohl das TabControl als auch die TabPage weg.
Dies führt dann natürlich dazu, dass das ListBoxItem-Control nicht gefunden werden kann.
Was kann hierfür die Ursache sein?
Wie gesagt, bei allen Controls ist mindestens die AutomationID gesetzt.
Vielen Dank im voraus!