Codierter UI-Test, der die SilverlightUIAutomationHelper-Assembly nicht findet

8

Ich versuche, einige codierte UI-Tests mit Visual Studio 2010 auf meiner SharePoint 2010-Website durchzuführen. Eine bestimmte Datei in SharePoint startet meine Silverlight-Anwendung in einem separaten Fenster. Ich habe die SilerlightUIAutomationHelper-Assembly als Referenz in allen meinen Silverlight-Projekten hinzugefügt, auf denen dies ausgeführt wird. Dies sollte es mir erlauben, Aktionen in ihm aufzunehmen, aber es erscheint eine Fehlermeldung, wenn ich versuche, in meiner Silverlight App aufzunehmen:

%Vor%

Ich führe Silverlight 5.0 aus, also kann das nicht das Problem sein. Ich habe auch überprüft, dass die SilverlightUIAutomationHelper-DLL es in das xap-Paket geschafft hat.

Ich konnte diese Aktionen erfolgreich in SharePoint 2013 / Visual Studio 2012 mit dieser Erweiterung aufzeichnen: Ссылка

Irgendeine Idee, warum das passiert? Was kann ich tun, um es zu beheben?

    
tnw 03.04.2013, 13:13
quelle

1 Antwort

4

Um codierte UI-Tests in Silverlight 5 durchführen zu können, müssen Sie den Assistenten für die Automatisierung der codierten Benutzeroberfläche von hier aus aktualisieren: Visual Studio-Galerie: UI-Test-Plugin für Silverlight Das alte, das mit VS2010 ausgeliefert wird, funktioniert aber nur auf SL4 und darunter.

SL5 wurde etwas anders implementiert und hat die Coded UI-Tests abgebrochen, weshalb Entwickler aufgefordert wurden, zu VS2012 und dem neuen UI Automation Plugin zu wechseln (wie Sie herausgefunden haben).

Sobald Sie die ausführbare Datei UITestPluginForSilverlight.msi installiert haben, müssen Sie auf diese Assemblys im Silverlight-Teil Ihres Projekts verweisen (das Sie bereits haben).

Soweit ich mich erinnere, und der Grund, warum Ihre Coded UI Tests VS2010 einbrachen, aber in VS2012 arbeiten, liegt daran, dass die SL5- und SL4 UIMap.designer.cs-Dateien, die von den Test-Recordern generiert werden, nicht gut miteinander kompatibel sind .

SL4-Aufnahmen, die mit dem SL4-Automatisierungshelfer generiert wurden, funktionieren nicht mit der SL5-Version des AutomationHelper. SL5 Autiomation Helper funktioniert jedoch mit SL4-Aufnahmen, wenn diese Aufnahmen von VS2012 erzeugt werden.

Um es genauer auszudrücken: Wenn Sie den Recorder verwenden, wird eine UIMap-Datei erstellt. Die Map-Datei besteht aus drei Teilen:

  1. XML Auflistung aller aufgezeichneten Methoden
  2. Vom Designer generierter Code hinter der partiellen Klasse.
  3. Eine partielle Benutzerklasse.

Wenn Sie den vom Designer generierten Code hinter der Datei untersuchen, können Sie tatsächlich herausfinden, dass der Rekorder eine Menge Code generiert, um die Steuerelemente zu finden und mit ihnen zu interagieren.

Für jede Steuerung entdeckt der Rekorder eine Instanz des entsprechenden Test- / Interaktionsobjekts.

Beim Deklarieren dieser Objekte definiert der Rekorder eine Reihe von erkennbaren / durchsuchbaren Eigenschaften. Das nächste Mal, wenn die Wiedergabe ausgeführt wird, werden diese Eigenschaften verwendet, um das tatsächliche Steuerelement zu finden.

Außerdem haben alle Steuerelemente einen übergeordneten Wert, sodass der obligatorische Rekorder für jedes ermittelte Steuerelement ein übergeordnetes Benutzeroberflächenelement angibt. Für SL4 und SL5 sind die Eltern wie folgt:

  • Browserfenster
  • HTML-Seite
  • Div (hält die Silverlight-Laufzeit)
  • SL-Objekt (SL Runtime-Plugin)
  • Haupt-SL-UI-Element (normalerweise der Squily-Buzy-Indikator)
  • Navigationsrahmen
  • Interne Seiten
  • Kontrollen

Konstruktor:

  1. Übergeordnetes Kontroll- / Interaktionsobjekt

Sucheigenschaften:

  1. Seitentitel: Die gesamte Zeichenfolge, die vom Fenstertitel des Browsers gerendert wird.
  2. Instanznummer: (beginnt bei 1 für Listen ... was seltsam ist)
  3. Kontroll-ID: (definiert durch die Attribute Name oder x: Name xaml)
  4. Anzeigename: Dies ist für Combobox / Listenelemente problematisch, da es funktioniert durch Kombinieren von dem, was in dem Kombinationsfeld- / Listenelementelement dargestellt wird, kombiniert mit der Instanznummer dieses Elements: zum Beispiel:

Ein Kombinationsfeld mit zwei Elementen, von denen jedes "Listenelement" genannt wird, kann durch die folgenden Anzeigenamen erkannt werden:

"Listenelement: 1" und "Listenelement: 2"

  1. Jede Kombination und Permutation von Suchattributen (Sie können sie nachschlagen).

Kurz gesagt, die tatsächlichen Interaktionsobjekte, die von den Rekordern erzeugt werden, sind in SL4 und SL5 unterschiedlich. Das heißt, Sie können keine UIMap.designer.cs nehmen und sie gegen eine andere austauschen. Das Testframework (und seine zugeordneten Interaktionsobjekte, die in UIMap.designer.cs verwendet werden) sind nicht binärkompatibel. Deshalb kann Ihre Wiedergabe nicht funktionieren.

    
bleepzter 24.09.2013 18:10
quelle