Dieser Artikel wurde maschinell übersetzt.

Testlauf

Webbenutzeroberflächen-Testautomatisierung mit dem WebBrowser-Steuerelement

James McCaffrey

Downloaden des Codebeispiels

James McCaffreyIn der Kolumne dieses Monats zeige ich Ihnen, ein neues Verfahren zum Erstellen von Benutzeroberflächen-Testautomatisierung für Webanwendungen. Das Verfahren, das ich vorstellen bietet eine Lösung für Szenario Tests sehr häufig, aber nicht ganz einfach: Umgang mit modalen Meldungsfelder, die von einer Anwendung generiert.

Die beste Möglichkeit, damit Sie sehen, worauf ich bin besteht darin, einen Blick auf die Abbildungen in Abbildungen 1 und 2-. Das Bild in Abbildung 1 zeigt eine einfache, aber repräsentative Webanwendung in Internet Explorer gehostet. Die Anwendung nimmt Benutzereingaben in ein Textfeld und nach der Benutzer auf die Schaltfläche Click Me klickt, die Anwendung identifiziert die Farbe des Artikels eingeben, dann zeigt das Ergebnis in das zweite Textfeld.

image: Example Web App Under Test

Abbildung 1 Beispiel Web-Anwendung unter Test

Beachten Sie, wenn das Click Me Schaltfläche geklickt wird, die Anwendung Logik überprüft, wenn das Benutzer Eingabefeld leer ist. Wenn dies der Fall ist, wird ein modales Meldungsfeld eine Fehlermeldung generiert. Umgang mit einem Meldungsfeld ist teilweise problematisch, da das Meldungsfeld Teil der Browser oder das Browser-Dokument ist nicht.

Jetzt sehen Sie sich den Beispiel-Test run in Abbildung 2. Die Testumgebung ist eine Windows Forms-Anwendung. In den Windows Forms eingebettet ist app ein WebBrowser-Steuerelement, das die Windows Forms bietet die Möglichkeit zum Anzeigen und Bearbeiten der dummy testende Webanwendung.

image: Example Test Run

Abbildung 2 Beispiel Testlauf

Wenn Sie die Nachrichten in das ListBox-Steuerelement am unteren Rand des Windows Forms-Testumgebung untersuchen, sehen Sie, dass die Testumgebung, die durch die Webanwendung unter Testbedingungen in das WebBrowser-Steuerelement geladen beginnt. Als Nächstes verwendet der Testumgebung einen separaten Ausführungsthread zu überwachen, und befassen sich mit der – alle Meldungsfelder, die durch die Webanwendung generiert. Die Testumgebung simuliert einen Benutzerklick auf die Webanwendung Click Me Taste, der wiederum ein modales Fehlermeldungsfeld erstellt. Der Thread Watcher feststellt, dass das Meldungsfeld und simuliert einen Benutzer sofort auf. Die Testumgebung schließt durch Simulieren eines Benutzers “ Rosen ” eingeben in das erste Eingabefeld, klicken auf das Click Me Schaltfläche, und suchen für den Testfall “ Rot ” in das zweite Textfeld Antwort erwartet.

In diesem Artikel beschreibe ich kurz das Beispiel testende Webanwendung. Ich schrittweise dann den Code für die Windows Forms-Testumgebung so, dass Sie Mein Code zum erfüllen Ihrer testen Szenarien ändern werden. Ich enden mit einer Beschreibung der Situationen, in denen diese Vorgehensweise anwendbar ist und wenn alternative Verfahren verbessert werden können.

Dieser Artikel setzt voraus, sind grundlegende Kenntnisse der Web-Entwickler und fortgeschrittene C#-Codierfähigkeiten, sondern auch dann, wenn Sie mit c# vertraut sollte ohne viel Probleme folgen. Ich glaube, dass Sie feststellen, dass das Verfahren, das ich hier stellen Sie eine nützliche Ergänzung Ihrer persönlichen Softwaretests Entwicklung und Management tool Kit.

Die zu testende Anwendung

Let’s sehen Sie sich den Code für die Beispiel-Webanwendung, die das Ziel der Testautomatisierung ist. Der Einfachheit halber habe ich die Anwendung mit dem Editor. Die Funktionalität der Anwendung wird durch clientseitige JavaScript anstelle der serverseitige Verarbeitung bereitgestellt. Wie weiter unten erläutert wird, dieser Test Automation-Technik funktioniert mit Anwendungen basierend auf den meisten Web-Technologien (z. B. ASP.NET Perl/CGI und So weiter), aber die Technik eignet sich am besten für Anwendungen, die JavaScript, verwenden um Meldungsfelder zu generieren. Der gesamte Code der Web-Anwendung wird in präsentiert Abbildung 3.

Abbildung 3 der Webanwendung

<html>
<head>
<title>Item Color Web Application</title>
<script language="JavaScript">
  function processclick() {
    if (document.all['TextBox1'].value == "") {
      alert("You must enter an item into the first box!");
    }
    else {
      var txt = document.all['TextBox1'].value;
      if (txt == "roses")
        document.all["TextBox2"].value = "red";
      else if (txt == "sky")
        document.all["TextBox2"].value = "blue";
      else
        document.all["TextBox2"].value = "I don't know that item";
    }
  }

</script>
</head>
<body bgcolor="#F5DEB3">
  <h3>Color Identifier Web Application</h3>
  <p>Enter an item: 
    <input type="text" id="TextBox1" /></p>
  <p><input type="button" value="Click Me" 
            id="Button1" 
            onclick="processclick()"/></p>
  <p>Item color is: 
    <input type="text" id="TextBox2" /></p>
</body>
</html>

Ich meine Webanwendung wird als default.html in einem Verzeichnis mit dem Namen ColorApp im Verzeichnis C:\Inetpub\Wwwroot auf dem Hostcomputer Test gespeichert gespeichert. Um lenken, deaktivieren Sie Sicherheitsprobleme von, funktioniert das Verfahren, das ich hier vorstellen optimal, wenn die Testautomatisierung direkt auf dem Computer ausgeführt wird, die wie der Webserver, der als Host für die zu testende Anwendung fungiert. Halten Sie meine Webanwendung Beispiel einfach und nicht die Testautomatisierung Details zu verschleiern, habe ich die Verknüpfungen in einer Webanwendung Produktion z. B. Fehlerprüfungen beseitigen würde nicht angezeigt.

Das Kernstück der Webanwendung-Funktionalität ist in einer JavaScript-Funktion mit dem Namen Processclick enthalten. Diese Funktion wird aufgerufen, klickt ein Benutzer auf die Anwendung Schaltflächen-Steuerelement mit der ID Button1 und Bezeichnungswert “ Click Me ” Die Funktion Processclick überprüft zuerst, ob der Wert im Eingabeelement TextBox1 leer ist. In diesem Fall wird ein Fehlermeldungsfeld mithilfe der JavaScript-Funktion Warnung generiert. Wenn TextBox1 input-Elements nicht leer ist, verwendet die Processclick-Funktion eine If-Then-Anweisung, um einen Wert für das TextBox2-Element zu erstellen. Beachten Sie, dass da Funktionen der Web-Anwendung von clientseitigem JavaScript bereitgestellt wird, Sie die Anwendung nicht mehrere Client-zu-Server-Roundtrips führen und daher die Webanwendung nur einmal pro Zyklus Funktionalität geladen wird.

Windows Forms-Testumgebung

Jetzt let’s Durchlaufen der Testumgebung Testcode in Abbildung 2 dargestellt werden, so dass Sie den Code an Ihre eigenen Bedürfnisse anpassen werden. Die Testumgebung ist eine Windows Forms-Anwendung.Normalerweise würde ich Visual Studio verwenden, um die Anwendung zu erstellen. Allerdings werde ich Ihnen zeigen, wie die Testumgebung Editor und der c#-Befehlszeilencompiler verwenden, da einige wichtige Konzepte ausblenden, die Benutzerfreundlichkeit und automatisch generierter Code in Visual Studio erstellt. Sobald Sie meinen Beispielcode kennen, sollten Sie keine Probleme mit Visual Studio, sondern Editor verfügen.

Öffnen Sie Notepad, und beginnen meine Testumgebung verwendeten Namespaces deklarieren:

using System;
using System.Windows.Forms;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Threading;

Sie benötigen die Namespaces "System", "Forms" und "Zeichnen für die grundlegende Funktionalität von Windows Forms. InteropServices-Namespace ermöglicht die Testumgebung zum Suchen und Bearbeiten von modale Dialogfelder, die mithilfe des P/Invoke-Mechanismus. P/Invoke können Sie C#-Wrappermethoden zu erstellen, die systemeigene Win32-API-Funktionen aufrufen. Threading-Namespace wird verwendet, um aus einem separaten Thread zu drehen, die für die Anzeige von Meldungsfeldern überwacht.

Next I declare a harness namespace and I begin the code for the main Windows Forms application class, which inherits from the System.Windows.Forms.Form class:

namespace TestHarness
{
  public class Form1 : Form
  {
    [DllImport("user32.dll", 
      EntryPoint="FindWindow",
      CharSet=CharSet.Auto)]
    static extern IntPtr FindWindow(
      string lpClassName,
      string lpWindowName);
.
.
.

Innerhalb der Definition von Form1 platzieren ich sofort ein Attribut Gültigkeitsbereich der Klasse, die es ermöglicht die Testumgebung die externe FindWindow-API-Funktion aufrufen, die in user32.dll befindet. Die Funktion FindWindow-API ist eine C#-Methode auch mit der Bezeichnung FindWindow, die akzeptiert des internen Namens eines Fensters-Steuerelements und gibt einen IntPtr-Handle an das Steuerelement zugeordnet. The FindWindow method will be used by the test harness to get a handle to the message box generated by the Web application under test.

Als Nächstes fügen Sie zwei weitere Attribute, um zusätzliche Win32-API-Funktionalität zu aktivieren:

[DllImport("user32.dll", EntryPoint="FindWindowEx",
  CharSet=CharSet.Auto)]
static extern IntPtr FindWindowEx(IntPtr hwndParent,
  IntPtr hwndChildAfter, string lpszClass, 
  string lpszWindow);

[DllImport("user32.dll", EntryPoint="PostMessage",
  CharSet=CharSet.Auto)]
static extern bool PostMessage1(IntPtr hWnd, uint Msg,
  int wParam, int lParam);

Zugeordnete FindWindowEx-API-Funktion FindWindowEx c#-Methode wird verwendet, um ein untergeordnetes Steuerelement des Steuerelements durch FindWindow, nämlich die Schaltfläche OK im Meldungsfeld gefunden erhalten. PostMessage ausgeführt werden-API-Funktion zugeordnete PostMessage1 c#-Methode eine Maus - nach-oben und Maus - senden Sie die Nachricht verwendet – mit anderen Worten, klicken Sie – klicken Sie auf die Schaltfläche OK.

Ich deklarieren Sie dann die drei Steuerelemente der Gültigkeitsbereich der Klasse, die Teil des Windows Forms nutzen:

private WebBrowser wb = null;
private Button button1 = null;
private ListBox listBox1 = null;

Das WebBrowser-Steuerelement ist ein verwalteter Codewrapper für systemeigenen Code, der die Funktionalität von Internet Explorer-Webbrowser enthält. Das WebBrowser-Steuerelement stellt Methoden und Eigenschaften, die zum Überprüfen und Bearbeiten einer Webseite, die im Steuerelement gespeichert. Das Button-Steuerelement verwendet, um die Testautomatisierung starten und das ListBox-Steuerelement zum Anzeigen der Protokollierung von Testnachrichten Testumgebung verwendet werden.

Anschließend starten Sie den Code für Form1-Konstruktor:

public Form1() {
    // button1
    button1 = new Button();
    button1.Location = 
      new Point(20, 430);
    button1.Size = new Size(90, 23);
    button1.Text = "Load and Test";
    button1.Click += 
      new EventHandler(
      this.button1_Click);
  .
.
.

Dieser Code sollte relativ selbsterklärend sein. Es ist durchaus möglich, dass Sie nie hatten, neu, bevor Sie Windows Forms-Benutzeroberfläche Code schreiben, da Visual Studio gute Arbeit UI-Standardcode zu generieren. Beachten Sie das Muster: Instanziieren Sie ein Steuerelement zu, legen Sie die Eigenschaften und dann Ereignishandlermethoden einbinden. Sie sehen diese dasselbe Muster mit dem WebBrowser-Steuerelement. Wenn der Test Automation-Technik ich in diesem Artikel vorstellen, ist es sinnvoll, eine Möglichkeit zum Anzeigen von Nachrichten verfügen und ein ListBox-Steuerelement funktioniert gut:

// listBox1
listBox1 = new ListBox();
listBox1.Location = new Point(10, 460);
listBox1.Size = new Size(460, 200);

Weiter, die das WebBrowser-Steuerelement eingerichtet werden:

// wb
wb = new System.Windows.Forms.WebBrowser();
wb.Location = new Point(10,10);
wb.Size = new Size(460, 400);
wb.DocumentCompleted +=
  new WebBrowserDocumentCompletedEventHandler(ExerciseApp);

Die wichtigsten hier zu beachten ist, dass ich das in DocumentCompleted-Ereignis eine Ereignishandlermethode einbinden, nachdem die testende Webanwendung vollständig in das WebBrowser-Steuerelement geladen ist, Steuerung der Ausführung einer Programm definierten Methode namens ExerciseApp (die ich noch codiert noch nicht) übertragen werden sollen. Dies ist wichtig, da in fast allen Situationen eine Verzögerung beim Laden von der Webanwendung werden, und jeder Versuch, die Webanwendung im Steuerelement zuzugreifen, bevor er vollständig geladen ist, wird eine Ausnahme ausgelöst.

Sie können schon erraten haben, dass eine Möglichkeit für den Umgang mit diesem eine Thread.Sleep-Anweisung in der Testumgebung platziert ist. Doch da die Testumgebung und das WebBrowser-Steuerelement beide den gleichen Ausführungsthread ausgeführt werden, wird die Sleep-Anweisung anzuhalten, die Testumgebung, und das Laden der WebBrowser.

Ich vollständig den Form1-Konstruktorcode durch Anhängen der Benutzersteuerelemente auf das Form-Objekt:

// Form1
  this.Text = "Lightweight Web Application Windows Forms Test Harness";
  this.Size = new Size(500, 710);
  this.Controls.Add(wb);
  this.Controls.Add(button1);
  this.Controls.Add(listBox1);
} // Form1()

Als Nächstes codieren Sie die Ereignishandlermethode für das Schaltflächen-Steuerelement in Windows Forms-Umgebung, die aus der Testautomatisierung gestartet:

private void button1_Click(object sender, EventArgs e) {
  listBox1.Items.Add(
    "Loading Web app under test into WebBrowser control");
  wb.Url = new Uri(
    "http://localhost/ColorApp/default.html");
}

Nach der Anmeldung einer Nachricht, weisen ich das WebBrowser-Steuerelement die Webanwendung unter Testbedingungen geladen werden, indem die Url-Eigenschaft des Steuerelements festlegen. Beachten Sie, dass ich den URL der Anwendung unter Testbedingungen hartcodiert haben. Das Verfahren, das ich hier vorstellen ist am besten für einfache, verwerfbare Testautomatisierung Parameterwerte hartcodiert haben, in denen weniger Nachteile als in Situationen, in denen die Testautomatisierung über einen längeren Zeitraum verwendet werden muss.

Anschließend starten Sie den Code für die ExerciseApp-Methode, die Steuerung der Ausführung akzeptiert, wenn das in DocumentCompleted-Ereignis ausgelöst wird:

private void ExerciseApp(object sender, EventArgs e) {
  Thread thread = new Thread(new
    ThreadStart(WatchForAndClickAwayMessageBox));
  thread.Start();

Die Methode ExerciseApp enthält die meisten der eigentliche Test Testumgebung Logik. Zunächst erstellen einen neuen Thread, der ein Programm definierten Methode namens WatchForAndClickAwayMessageBox zugeordnet. Der grundlegende Gedanke ist, dass wenn ein modales Meldungsfeld durch die Webanwendung unter Testbedingungen im WebBrowser-Steuerelement generiert wird, alle Test Testumgebung Ausführung angehalten wird bis das Meldungsfeld, behandelt wird bedeutet, dass die Testumgebung im Meldungsfeld direkt behandeln kann nicht. So kann durch dreht aus einem separaten Thread, der ein Meldungsfeld überwacht, die Testumgebung indirekt im Meldungsfeld verarbeiten.

Ich als Nächstes protokollieren einer Meldung und simulieren Sie einen Schaltfläche auf der Webanwendung Click Me Benutzer:

listBox1.Items.Add(
  "Clicking on 'Click Me' button");
HtmlElement btn1 = 
  wb.Document.GetElementById("button1");
btn1.InvokeMember("click");

Die getElementById-Methode akzeptiert die ID eines HTML-Elements, das Teil des Dokuments in das WebBrowser-Steuerelement geladen wird. InvokeMember-Methode kann verwendet werden, zum Auslösen von Ereignissen, wie z. B. klicken und Mouseover. Da in der Webanwendung TextBox1-Steuerelement kein Text vorhanden ist, wird die Webanwendung im Meldungsfeld Fehler generieren, die von der Testumgebung WatchForAndClickAwayMessageBox-Methode behandelt werden wird als ich in Kürze eingehen werde.

Unter der Voraussetzung, dass das Meldungsfeld behandelt worden ist, weiterhin ich nun das Testszenario:

listBox1.Items.Add("Waiting to click away message box");
listBox1.Items.Add("'Typing' roses into TextBox1");
HtmlElement tb1 = wb.Document.GetElementById("TextBox1");
tb1.InnerText = "roses";

Verwendung des InnerText-Eigenschaft zum Simulieren eines Benutzers “ Rosen ” in das TextBox1-Steuerelement eingeben. Andere nützlichen Eigenschaften für die Bearbeitung der testende Webanwendung sind OuterText InnerHtml und OuterHtml.

Meine Automatisierung weiterhin ein Mausklick auf die Webanwendung des Click Me Schaltfläche simulieren:

listBox1.Items.Add(
  "Clicking on 'Click Me' button again");
btn1 = wb.Document.GetElementById("button1");
btn1.InvokeMember("click");

Im Gegensatz zu vorherigen simuliert, klicken Sie auf, dieses Mal Text im Steuerelement TextBox1 so, dass die Logik für die Webanwendung Ergebnis Text in TextBox2-Steuerelement angezeigt wird, und die Testumgebung kann ein erwartetes Ergebnis überprüfen und einen Durchlauf zu protokollieren oder Meldung fehlschlagen:

listBox1.Items.Add("Looking for 'red' in TextBox2");
HtmlElement tb2 = wb.Document.GetElementById("TextBox2");
string response = tb2.OuterHtml;
if (response.IndexOf("red") >= 0) {
  listBox1.Items.Add("Found 'red' in TextBox2");
  listBox1.Items.Add("Test scenario result: PASS");
}
else {
  listBox1.Items.Add("Did NOT find 'red' in TextBox2");
  listBox1.Items.Add("Test scenario result: **FAIL**");
}

Beachten Sie, dass die HTML-Antwort etwa wie folgt aussieht < input Type = ” Textwert ” = ” Red ” / >, so dass ich die IndexOf-Methode, verwenden um die OuterHtml-Inhalte für das richtige erwarteten Ergebnis zu suchen.

Hier ist die Definition der Methode, die mit der Webanwendung modales Meldungsfeld wird:

private void WatchForAndClickAwayMessageBox() {
  IntPtr hMessBox = IntPtr.Zero;
  bool mbFound = false;
  int attempts = 0;
  string caption = "Message from webpage";
.
.
.

Ich deklarieren Sie einen Handle für das Meldungsfeld eine boolesche Variable, die mich wissen, wann das Meldungsfeld gefunden wurde, eine Zählervariable, damit ich oft meiner Testumgebung für das Meldungsfeld aussehen, um eine Endlosschleife zu verhindern und die Beschriftung des Meldungsfelds zu suchenden beschränken können. Auch in diesem Fall die Nachricht im Feld Beschriftung ziemlich offensichtlich ist, können Sie immer Spy++-Tool verwenden, um zu überprüfen, die Caption-Eigenschaft eines beliebigen Steuerelements Fenster.

Als Nächstes codieren Sie eine Schleife ansehen:

do {
  hMessBox = FindWindow(null, caption);
  if (hMessBox == IntPtr.Zero) {
    listBox1.Items.Add("Watching for message box .
.
. "
);
    System.Threading.Thread.Sleep(100);
    ++attempts;
  }
  else {
    listBox1.Items.Add("Message box has been found");
    mbFound = true;
  }
} while (!mbFound && attempts < 250);

Ich verwende eine - while-Schleife wiederholt versucht, ein Handle an ein Meldungsfeld zu erhalten. Ist der Ertrag FindWindow IntPtr.Zero können Sie 0,1 Sekunden verzögert und meine Schleife-Versuch Zähler erhöht. Ist die Rückgabe nicht IntPtr.Zero, ich weiß, ich habe einen Handle für das Meldungsfeld erhalten und kann ich die beenden - while-Schleife. Die “ Versuche <250 ” Bedingung schränkt die Zeitspanne, die meine Testumgebung darauf wartet, dass ein Meldungsfeld angezeigt wird. Je nach der Art Ihrer Webanwendung empfiehlt es sich, die Verzögerung und die maximale Anzahl der Versuche zu ändern.

Nach dem - while-Schleife beendet beenden ich bis WatchForAndClickAwayMessageBox-Methode, indem Sie sehen können, wenn die Exit aufgetreten ist, da ein Meldungsfeld gefunden wurde, oder weil der Testumgebung hat das Zeitlimit überschritten:

if (!mbFound) {
  listBox1.Items.Add("Did not find message box");
  listBox1.Items.Add("Test scenario result: **FAIL**");
}
else { 
  IntPtr hOkBtn = FindWindowEx(hMessBox, IntPtr.Zero, null, "OK");
  ClickOn(hOkBtn );
}

Wenn das Meldungsfeld nicht gefunden wurde, können Sie dies als Fehler Testfall zu klassifizieren und zu protokollieren, die als Ergebnis. Wenn das Meldungsfeld gefunden wurde, verwenden Sie die FindWindowEx-Methode erhalten einen Handle für die Schaltfläche OK, untergeordnetes Steuerelement befindet sich auf dem Steuerelement, das übergeordnete Nachricht und anschließend eine Programm definierten Hilfsmethode namens ClickOn, die ich als definieren:

private void ClickOn(IntPtr hControl) {
  uint WM_LBUTTONDOWN = 0x0201;
  uint WM_LBUTTONUP = 0x0202;
  PostMessage1(hControl, WM_LBUTTONDOWN, 0, 0);
  PostMessage1(hControl, WM_LBUTTONUP, 0, 0);
}

Die Windows-Meldung Konstanten 0201h und 0202h stehen linke Maus Schaltfläche nach unten und links-Maus-Schaltfläche-Verbindung. Ich verwende die PostMessage1-Methode, die an die Win32-PostMessage ausgeführt werden-API-Funktion verknüpft ist, die ich weiter oben beschrieben.

Meine Testumgebung endet durch Definieren der Testumgebung Einstiegspunkt der Main-Methode:

[STAThread]
private static void Main() {
  Application.Run(new Form1());
}

Nach dem Speichern meiner Testumgebung als Harness.cs, verwendet habe ich die Befehlszeilenversion des Compilers. Ich die spezielle Visual Studio-Befehlsshell (die kennt, wobei der csc.exe C#-Compiler ist) zu starten, navigieren Sie zum Verzeichnis mit meiner Datei Harness.cs und den Befehl:

C:\LocationOfHarness> csc.exe /t:winexe Harness.cs

Das Argument /t:winexe weist den Compiler generiert ausführbare statt der Standard-Konsolenanwendung ausführbare Windows Forms. Das Ergebnis ist eine Datei namens Harness.exe, die von der Befehlszeile aus ausgeführt werden können. Wie bereits erwähnt, möchten Sie wahrscheinlich anstelle Editor von Visual Studio verwenden, um die WebBrowser-Steuerelement basierenden Testautomatisierung erstellen.

Zusammenfassung

Das hier vorgestellten Beispiel sollten Sie genügend Informationen, um Ihnen den Einstieg Schreiben eigener WebBrower Steuerelement-basierte Testautomatisierung geben. Dieses Verfahren eignet sich am besten für die einfache Automatisierung Szenarien – Situationen schnell einsatzbereit und, bei denen die Automatisierung eine kurze erwartete Lebensdauer hat die Testautomatisierung abgerufen werden soll. Die Stärke dieses Verfahrens ist die Möglichkeit für den Umgang mit modale Dialogfelder – etwas, das Recht schwierig sein kann, wenn andere Benutzeroberflächen-Testautomatisierung Ansätze verwenden. Dieses Verfahren ist besonders nützlich, wenn Sie die Funktionalität der Web-Anwendung testen, die hauptsächlich von clientseitigem JavaScript generiert wird.

In Situationen, in denen Web durch mehrere Client / Server-Funktionalität der Anwendung generiert wird gerundet Schleifen, müssen Sie den vorgestellten, Code geändert werden, da jedes Mal, wenn eine vom Server Antwort, das in DocumentCompleted-Ereignis ausgelöst werden. Eine Möglichkeit für den Umgang mit dieser wird zum Erstellen und Verwenden einer Variablen, die verfolgt die Anzahl von Ereignissen in DocumentCompleted und Ihre Testumgebung Verzweigungslogik hinzugefügt.

Dr.. James McCaffrey  arbeitet für Volt Information Sciences Inc., wo er verwaltet die technische Schulungen für Softwareentwickler bei Microsoft Redmond, Washington, Campus. Er wird in verschiedenen Microsoft-Produkten, einschließlich Internet Explorer und MSN Search gearbeitet.Dr..McCaffrey ist der Autor von “ .NET Test Automation Recipes ” (Apress, 2006) und kann unter jammc@microsoft.com-erreicht werden.

Dank an die folgenden technischen Experten von Microsoft für die Überprüfung der in diesem Artikel: Paul Newson und Dan Liebling