impuls SilverlightAutomationIDBehaviors veröffentlicht

by Gregor Biswanger 8. März 2012 08:36

Ein Problem beim Testen von Silverlight-Anwendungen mittels CodedUI ist, das Ermitteln einzelner TreeViewItems, ListBoxItems, ComboBoxItems oder DataGridCells. Dazu gibt es explizit das Property AutomationID. Die Items werden allerdings zur Laufzeit erzeugt und ein einfaches Data-Binding wird nicht übernommen. Als Lösung stellt Microsoft das Überschreiben von ToString der jeweiligen Entities vor (http://msdn.microsoft.com/de-de/library/gg413373.aspx). Das ist aber keine saubere Lösung für ein sauberes DomainModel.

Dazu habe ich ein paar Behaviors geschrieben (impuls SilverlightAutomationIDBehaviors) und sind ab heute bei der Expression Gallery veröffentlicht. Worin diese kostenfrei zum Download bereitstehen.

 

 

image

 

Hier ist eine Beschreibung für die Verwendung der Behaviors

 

1, Die Behaviors von der Expression Gallery downloaden (http://gallery.expression.microsoft.com/SLAutomationID*)

Die Assemblys aus der heruntergeladenen ZIP-Datei referenzieren.

* Rechtsklick auf ZIP-Datei und unter den Eigenschaften das „Zulassen“ nicht vergessen vor dem entpacken.

2, Anschließend muss das Silverlight-Projekt mit Microsoft Expression Blend 4 geöffnet werden.

3, In Expression Blend wird im Bereich „Behaviors“ die SilverlightAutomationIDBehaviors angeboten (siehe Abbildung 1).

Hier wird als Beispiel das SilverlightAutomationIDTreeViewBehavior (1) mittels Drag & Drop auf ein TreeView (2) gedropt. Das Behavior steht dann direkt als Kinderelement (3) vom TreeView. Auf der rechten Seite (4) sind dann alle dazugehörigen Eigenschaften.

SNAGHTML483d89a

Abbildung 1 – Das TreeView um das AutomationTreeViewBehavior erweitern.

Sobald die Silverlight-Anwendung geladen wird und das TreeView seine Daten erhält, vergibt das Behavior automatisch die AutomationIDs für die TreeViewItems. Diese sind als Standard der Index des jeweiligen TreeViewItems.

image

Abbildung 2 – Die TreeViewItems erhalten als Standard deren Indexnummer als AutomationID und Namen.

Das Behavior kann auch ohne Expression Blend zum Einsatz kommen. Der passende XAML-Code würde wie folgt aussehen:

 

   1:  <sdk:TreeView x:Name="treeViewUsers" ItemsSource="{Binding Users}">
   2:      <sdk:TreeView.ItemTemplate>
   3:          <sdk:HierarchicalDataTemplate ItemsSource="{Binding Friends, Mode=TwoWay}">
   4:              <TextBlock Text="{Binding Name, Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Stretch" />
   5:          </sdk:HierarchicalDataTemplate>
   6:      </sdk:TreeView.ItemTemplate>
   7:   
   8:    <i:Interaction.Behaviors>
   9:      <SetAutomationIdBehavior:AutomationTreeViewBehavior />
  10:    </i:Interaction.Behaviors>
  11:  </sdk:TreeView>

 

Um beim Debuggen visuell testen zu können, kann die Eigenschaft ActiveDebugColor aktiviert werden.

 

image

Abbildung 3 – ActiveDebugColor aktivieren.

Das TreeView wird dann die TreeViewItems mit einem orangenen Hintergrund belegen, sobald diese ihre ID erhalten haben.

clip_image008

Abbildung 4 – TreeView mit ActiveDebugColor.


Wenn ActiveDebugColor aktiv ist, wird zudem eine detaillierte Information bei der Debug-Console von Visual Studio angezeigt.

image

Abbildung 5 – Weitere Informationen werden beim Output-Fenster während des Debuggens angezeigt.


Mit einem weiteren Feature beim Feld ID, kann man den Wert eines TreeViewItems als ID verwenden. Dazu muss mit dem gebundenen Typen der Propertyname als string eingetragen werden.

Hier im Beispiel wurde von der User-Klasse das Property Name ausgewählt. Mit AddNumberToID wird zusätzlich eine Nummerierung zum Namen erzeugt.

clip_image012

Abbildung 6 – Das Name-Property von der User-Klasse wird bei ID definiert.

image

Abbildung 7 – Der TreeViewItem-Wert wird als AutomationId verwendet.

Wichtig! Dieses Feature darf nur verwendet werden, wenn gewährleistet wird, dass alle Werte im TreeView nur einmalig vorkommen können.

Jetzt wird mit Visual Studio 2010 – Coded UI auch jedes TreeViewItem bestens erkannt.

clip_image016

Abbildung 8 – TreeViewItems werden vom Coded UI Test Builder bestens erkannt.

 

 

Bitte um Feedback

Haben dir die Behaviors weiterhelfen können? Werden auch welche für dein WPF, Windows Phone oder WinRT Projekt benötigt? Dann freue ich mich jetzt schon auf dein Feedback!

 

Besten Dank an die Firma impuls Informationsmanagement GmbH für das Sponsoren der Behaviors für die Community.



Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitten "kicken" sie ihn.
kick it on dotnet-kicks.de

Kommentare

Kommentar schreiben


(Zeigt dein Gravatar icon)  

  Country flag

biuquote
  • Kommentar
  • Live Vorschau
Loading



Powered by BlogEngine.NET 1.4.5.0
Theme by Extensive SEO

Über den Autor

Gregor Biswanger

Microsoft MVP für Client App Dev
XING

Gregor Biswanger (Microsoft MVP für Client App Dev) ist freier Consultant, Trainer, Autor und Speaker.


Seine Schwerpunkte liegen im Bereich der .NET-Architektur, agilen Prozessen und XAML. Er veröffentlichte vor kurzem seine DVD´s mit Video-Trainings zum Thema „Meine erste Windows 8 App“, „Windows Store Apps mit XAML und C#“ und „WPF 4.5 und Silverlight 5“ bei Addison-Wesley von video2brain.


Biswanger ist auch im Auftrag von Intel GmbH als Technologieberater für die Intel Developer Zone aktiv und ist Leader bei der Ingolstädter .NET Developers Group (INdotNET). 

 

Video über mich:
http://www.youtube.com/watch?v=mx_6SiiLxjk


Basta! 2011 Speaker

CLIPer

MCTS
Windows SharePoint Services 3.0 – Application Development (MCTS)