Share via


Making Coded UI Tests Wait For Specific Events During Playback

Sie können bei der Wiedergabe eines Tests der codierten UI festlegen, dass bei einem Test auf bestimmte Ereignisse gewartet werden soll, z. B. auf das Anzeigen eines Fensters, das Ausblenden einer Statusanzeige usw.Verwenden Sie hierzu die entsprechende UITestControl.WaitForControlXXX()-Methode, wie in der folgenden Tabelle beschrieben.Ein Beispiel für einen Test der codierten UI, bei dem bei einem Steuerelement darauf gewartet wird, dass es mithilfe der WaitForControlEnabled-Methode aktiviert wird, finden Sie unter Exemplarische Vorgehensweise: Erstellen, Bearbeiten und Verwalten von Tests der codierten UI.

Voraussetzungen

  • Visual Studio Ultimate, Visual Studio Premium
TippTipp

Sie können Aktionen Verzögerungen vor mithilfe des Test-Editors für codierte UI hinzufügen.Weitere Informationen finden Sie unter Gewusst wie: Einfügen einer Verzögerung vor einer UI-Aktion mithilfe des Test-Editors für codierte UI.

UITestControl.WaitForControlXXX()-Methoden

UITestControl.WaitForControlXXX()-Methoden

Beschreibung

WaitForControlReady

Wartet, bis für das Steuerelement Maus- und Tastatureingaben vorgenommen werden können.Das Modul ruft implizit diese API auf, damit mit allen Aktionen gewartet wird, bis mit dem Steuerelement Vorgänge ausgeführt werden können.In bestimmten vertraulichen Szenarien müssen Sie womöglich einen expliziten Aufruf ausführen.

WaitForControlEnabled

Wartet, bis das Steuerelement aktiviert wird, wenn der Assistent eine asynchrone Validierung der Eingabe durch Aufrufe an den Server ausführt.Sie können z. B. eine Methode verwenden, damit gewartet wird, bis die Schaltfläche Weiter des Assistenten aktiviert ist ().Ein Beispiel für diese Methode finden Sie unter Exemplarische Vorgehensweise: Erstellen, Bearbeiten und Verwalten von Tests der codierten UI.

WaitForControlExist

Wartet, bis das Steuerelement auf der Benutzeroberfläche angezeigt wird.Sie warten z. B. darauf, dass ein Fehlerdialogfeld angezeigt wird, nachdem die Anwendung die Validierung der Parameter durchgeführt hat.Die für die Validierung benötigte Zeit variiert.Sie können mithilfe dieser Methode auf das Fehlerdialogfeld warten.

WaitForControlNotExist

Wartet, bis das Steuerelement von der Benutzeroberfläche verschwindet.Sie können z. B. warten, bis die Statusanzeige ausgeblendet wird.

WaitForControlPropertyEqual

Wartet, bis die auf dem Steuerelement angegebene Eigenschaft den festgelegten Wert erreicht.Sie warten beispielsweise, bis der Statustext Fertig lautet.

WaitForControlPropertyNotEqual

Wartet, bis die auf dem Steuerelement angegebene Eigenschaft das Gegenteil eines festgelegten Werts erreicht.Sie warten beispielsweise, bis das Eingabefeld nicht schreibgeschützt, also bearbeitbar, ist.

WaitForControlCondition

Wartet, bis die angegebenen Prädikatrückgaben true sind.Diese Option kann für komplexe Wartevorgänge (wie OR-Bedingungen) für ein bestimmtes Steuerelement verwendet werden.Sie können beispielsweise warten, bis der Statustext Erfolgreich oder Fehler lautet, wie im folgenden Code dargestellt:

// Define the method to evaluate the condition 
private static bool IsStatusDone(UITestControl control) 
{ 
    WinText statusText = control as WinText; 
    return statusText.DisplayText == "Succeeded" || statusText.DisplayText == "Failed"; 
} 
// In test method, wait till the method evaluates to true 
statusText.WaitForControlCondition(IsStatusDone);

WaitForCondition``1

Alle vorherigen Methoden sind Instanzmethoden von UITestControl.Dies ist eine statische Methode.Mit dieser Methode wird außerdem darauf gewartet, dass das angegebene Prädikat true ist. Sie kann jedoch auch für komplexe Wartevorgänge (wie OR-Bedingungen) für mehrere Steuerelemente verwendet werden.Sie können z. B. warten, bis der Statustext Erfolgreich lautet oder eine Fehlermeldung angezeigt wird, wie im folgenden Code dargestellt:

// Define the method to evaluate the condition 
private static bool IsStatusDoneOrError(UITestControl[] controls) 
{ 
    WinText statusText = controls[0] as WinText; 
    WinWindow errorDialog = controls[1] as WinWindow; 
    return statusText.DisplayText == "Succeeded" || errorDialog.Exists; 
} 
// In test method, wait till the method evaluates to true 
UITestControl.WaitForCondition<UITestControl[]>(new UITestControl[] { statusText, errorDialog }, IsStatusDoneOrError); 

All diese Methoden weisen folgendes Verhalten auf:

  • Die Methoden geben "true" zurück, wenn der Wartevorgang erfolgreich war, und "false", wenn dabei ein Fehler aufgetreten ist.

  • Das implizite Timeout für den Wartevorgang wird von der WaitForReadyTimeout-Eigenschaft angegeben.Der Standardwert dieser Eigenschaft ist 60000 Millisekunden (eine Minute).

  • Die Methoden verfügen über eine Überladung für ein explizites Timeout in Millisekunden.Wenn der Wartevorgang jedoch zu einer impliziten Suche nach dem Steuerelement führt, oder wenn die Anwendung ausgelastet ist, kann die tatsächliche Wartezeit länger sein als das angegebene Timeout.

Die vorherigen Funktionen sind leistungsstark und flexibel und sollten fast alle Bedingungen erfüllen.Falls diese Methoden die Anforderungen jedoch nicht erfüllen und Sie Wait oder Sleep im Code angeben müssen, sollten Sie die Playback.Wait()-API anstelle der Thread.Sleep()-API verwenden.Gründe:

  • Mit der ThinkTimeMultiplier-Eigenschaft können Sie die Dauer des Standbymodus ändern.Standardmäßig ist für diese Variable "1" festgelegt. Sie können jedoch einen höheren oder niedrigeren Wert festlegen, um die Wartezeit im gesamten Code zu ändern.Wenn Sie z. B. ausdrücklich langsame Netzwerke oder einen anderen langsamen Leistungsfall testen, können Sie für diese Variable an einer Position (oder sogar in der Konfigurationsdatei) "1,5" festlegen, um an allen Positionen 50 Prozent zusätzliche Wartezeit hinzuzufügen.

  • Playback.Wait() ruft Thread.Sleep() (nach der oben aufgeführten Berechnung) intern in kleineren Ausschnitten in einer For-Schleife auf und überprüft gleichzeitig durch den Benutzer abgebrochene oder angehaltene Vorgänge.Mit anderen Worten: Sie können mithilfe von Playback.Wait() die Wiedergabe vor dem Ende des Wartevorgangs abbrechen, wohingegen der Standbymodus die Wiedergabe nicht abbricht oder eine Ausnahme auslöst.

TippTipp

Mit dem Editor für den Test der codierten UI können die Tests der codierten UI mühelos geändert werden.Er ermöglicht das Suchen, Anzeigen und Bearbeiten der Testmethoden.Sie können auch UI-Aktionen und die zugehörigen Steuerelemente in der UI-Steuerelementzuordnung bearbeiten.Weitere Informationen finden Sie unter Bearbeiten von Tests der codierten UI mithilfe des Test-Editors für codierte UI.

Empfehlungen

Weitere Informationen finden Sie unter Tests für fortlaufende Auslieferung mit Visual Studio 2012 - Kapitel 5: Automatisierung von Systemtests

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen, Bearbeiten und Verwalten von Tests der codierten UI

Gewusst wie: Einfügen einer Verzögerung vor einer UI-Aktion mithilfe des Test-Editors für codierte UI

Konzepte

Überprüfen von Code mithilfe der Benutzeroberflächenautomatisierung

Anatomy of a Coded UI Test

Unterstützte Konfigurationen und Plattformen für Tests der codierten UI und Aktionsaufzeichnungen

Weitere Ressourcen

Erstellen von Tests der codierten UI