WebDriver-API in Developer Channel

WebDriver bietet eine API, mit der das Testen von Benutzerszenarien im Browser automatisiert werden kann. In diesem Dokument wird die Verwendung von WebDriver mit Internet Explorer Developer Channel behandelt.

Was ist WebDriver?

WebDriver ermöglicht Entwicklern die Erstellung automatisierter Tests, in denen die Interaktion von Benutzern mit Webseiten simuliert und die ermittelten Ergebnisse zurückgemeldet werden. Der Unterschied zu JavaScript-Komponententests liegt darin, dass WebDriver Zugriff auf Funktionen und Informationen hat, die im Browser ausgeführten JavaScript-Tests nicht zur Verfügung stehen. Außerdem können Benutzerereignisse oder Ereignisse auf Betriebssystemebene genauer simuliert werden.

Darüber hinaus können in einer einzigen Sitzung mehrere Fenster, Registerkarten und Webseiten getestet werden.

Installieren von WebDriver in Internet Explorer Developer Channel

Zunächst müssen Sie Internet Explorer Developer Channel herunterladen und installieren.

Downloads stehen für Kunden bereit, die Internet Explorer 11 unter Windows 8.1 und Windows 7 SP1 ausführen.

Habe ich WebDriver mit Internet Explorer Developer Channel installiert?

Ja, aber das Tool wurde nicht aktiviert. Sobald WebDriver aktiviert ist, kann Ihr Browser über jedes Programm gesteuert werden, das Zugriff auf WebDriver hat. Damit der Browser nicht unerwartet von einem anderen Programm gesteuert wird, sollte die aktuelle Version von WebDriver manuell aktiviert werden. Führen Sie dazu die folgenden Schritte aus:

  • Öffnen Sie eine Eingabeaufforderung mit Administratorrechten. Die einfachste Möglichkeit besteht darin, die WINDOWS-LOGO-TASTE+X zu drücken, um das Quicklink-Menü aufzurufen, und dann die Taste A zu drücken, um die Option „Eingabeaufforderung (Administrator)“ auszuwählen.

    Von der Benutzerkontensteuerung werden Sie gefragt, ob die Eingabeaufforderung Änderungen an Ihrem Computer vornehmen darf. Nachdem Sie dies bestätigt haben, wird ein Fenster mit einer Eingabeaufforderung geöffnet.

  • Navigieren Sie zu dem Speicherort, an dem die WebDriver-Bibliothek vom Internet Explorer Developer Channel-Installer abgelegt wurde:

    cd C:\Program Files\Common Files\IEDCWebDriver

  • Registrieren Sie die Datei „IEDCWebDriver.dll“:

    regsvr32 IEDCWebDriver.dll

  • Öffnen Sie „Internet Explorer Developer Channel“. Klicken Sie im Menü Extras auf die Option Internetoptionen, wählen Sie die Registerkarte Sicherheit aus, und aktivieren Sie im unteren Bereich der Registerkarte das Kontrollkästchen neben Geschützten Modus aktivieren. Führen Sie diesen Schritt sowohl für die Zone Internet als auch für die Zone Lokales Intranet aus. Wenden Sie die neue Einstellung an.

Wie deaktiviere ich WebDriver in Internet Explorer Developer Channel?

Befolgen Sie die die Anweisungen oben, aber deaktivieren Sie das Kontrollkästchen neben Geschützten Modus aktivieren, und heben Sie die Registrierung der Bibliothek mit folgendem Befehl auf:

regsvr32 /u IEDCWebDriver.dll

Ausführen von WebDriver-Apps mit Internet Explorer Developer Channel

Wenn Sie eine kompilierte App ausführen möchten, die WebDriver zum Ziel hat, müssen Sie zur Laufzeit ein Appvve-Kennzeichen mit einer speziellen GUID angeben, um sicherzustellen, dass die App ordnungsgemäß auf Internet Explorer Developer Channel ausgerichtet ist.

Es gibt getrennte GUIDS für 32-Bit- und 64-Bit-Versionen von Internet Explorer Developer Channel.

  • 32-Bit-GUID: 9BD02EED-6C11-4FF0-8A3E-0B4733EE86A1_681E2361-2C6F-4D47-A8B7-D3F7B288CB45
  • 64-Bit-GUID: 9BD02EED-6C11-4FF0-8A3E-0B4733EE86A1_6A0357B5-AB99-4856-8A59-CF2C38579E78

Wenn der Name der App beispielsweise WDApp.exe lautet und Sie die 32-Bit-Version von Internet Explorer Developer Channel ausführen, sollten Sie sie wie folgt über die Befehlszeile ausführen:

WDApp.exe /appvve 9BD02EED-6C11-4FF0-8A3E-0B4733EE86A1_681E2361-2C6F-4D47-A8B7-D3F7B288CB45

Sie können diesen Vorgang automatisieren, indem Sie im Datei-Manager mit der rechten Maustaste auf Ihre App klicken und Verknüpfung erstellen auswählen und dann mit der rechten Maustaste auf die resultierende Verknüpfung klicken und Eigenschaften auswählen. Wählen Sie im Fenster Eigenschaften die Registerkarte Verknüpfung.

Im Feld Ziel ist der Pfad zu Ihrer App in Anführungszeichen angegeben. Fügen Sie das /appvve-Kennzeichen und die GUID innerhalb der Anführungszeichen an, und wenden Sie die Änderung an. Bei Verwendung der Verknüpfung wird Ihre App jedes Mal mit angefügtem Kennzeichen ausgeführt.

Wichtig  

Die oben aufgeführten GUIDs beziehen sich auf die erste Version von Internet Explorer Developer Channel. Da sich die GUIDs mit jeder Version ändern, sollten Sie die richtigen GUIDs aus der Dokumentation der jeweiligen Version ermitteln, wenn Sie Apps, die für diese Version geschrieben wurden, mit einer neueren Version testen.

Wichtig  

Das Kennzeichen und die GUID sind in die Einstellungen des WebDriver C#-Beispielprojekts integriert. Wenn Debugsitzungen in Visual Studio gestartet werden, werden sie automatisch als Laufzeitkennzeichen angewendet. Allerdings sind sie nicht in die kompilierten Apps integriert.

Wichtig  

Sie müssen nicht nur die richtige GUID für die Plattform verwenden, auf der Sie eine WebDriver-Anwendung ausführen möchten, sondern Ihre Anwendung auch noch für diese Plattform kompilieren. Da die meisten Benutzer mit Windows 8.1 eine 64-Bit-Architektur nutzen, ist das unten beschriebene WebDriver C#-Beispielprojekt für 64-Bit konfiguriert. Um das Projekt in die 32-Bit-Version zu ändern, wählen Sie in Visual Studio im Menü Erstellen die Option Konfigurations-Manager und wählen im Dropdownmenü Plattform den Wert „x86“.

Verwenden von WebDriver

Warnung  Diese Schritte erfordern einige Programmierkenntnisse, und die aufgeführten Anweisungen gelten derzeit ausschließlich für C# mit Visual Studio. Wenn Sie nicht über Visual Studio verfügen, können Sie die kostenlose Version von Microsoft Visual Studio Express 2013 für Windows Desktop nutzen, um mit dem Beispielprojekt zu experimentieren und Tests zu erstellen.

Zur Implementierung von WebDriver in Internet Explorer Developer Channel muss ein COM-Objekt erstellt werden, um die Befehlseingabe und die Ergebnisausgabe zu marshallen. Sowohl die Befehle als auch die Antworten weisen das JSON-Format auf.

Laden Sie zunächst das WebDriver C#-Beispielprojekt herunter. Dadurch erhalten Sie eine Beispielimplementierung des COM-Objekts und die Möglichkeit, über die WebDriver-Schnittstelle mit dem Browser zu kommunizieren.

Öffnen Sie die Datei IEWebDriverExample.sln mit Visual Studio, und öffnen Sie die Codedatei IEWebDriverSample.cs.

Datei „iewebdriversample.cs“ im Projektmappen-Explorer von Visual Studio

Wählen Sie zum Ausführen der Demo im Menü Debuggen die Option Starten ohne Debugging (STRG+F5). Es geschehen zwei wichtige Dinge. Es wird ein Konsolenfenster geöffnet, in dem die gesendeten Befehle und empfangenen Antworten angezeigt werden. Außerdem wird ein Internet Explorer-Fenster geöffnet, um die Befehle auszuführen.

Sie können auch Debugging starten (F5) auswählen, wenn jedoch alles einwandfrei funktioniert, wird das Konsolenfenster ausgeblendet, bevor Sie einen Blick auf die Befehle und Antworten werfen können. Wenn der Abschluss der Skriptausführung durch ein Fehler verhindert wird, bleibt das Fenster geöffnet.

Einrichten einer Sitzung

Eine WebDriver-Befehlssequenz beginnt normalerweise mit dem newSession-Befehl, durch den eine Sitzung eingerichtet wird. Dadurch werden ein Browserfenster geöffnet und eine Schnittstelle eingerichtet. Gleichzeitig wird ein Sitzungshandle zurückgegeben, damit Sie weitere Befehle an diese Sitzung richten können. Betrachten wir den zugrunde liegenden Code:

//Execute a "newSession" command
const string newSessionCommand = @"
{
  ""command"": {
    ""name"": ""newSession"",
    ""parameters"": {
      ""desiredCapabilities"": {},
      ""requiredCapabilities"": {}
    },
  ""sessionId"": null
  }
}";
strResponse = ExecuteCommand(newSessionCommand, null);

Abgesehen von den zusätzlichen Anführungszeichen, die eine Funktion zum Definieren eines mehrzeiligen Zeichenfolgenliterals in C# darstellen, sollte Ihnen dieses JSON-Format vertraut vorkommen.

Jeder Befehl beginnt mit dem Erstellen eines JavaScript-Objektliterals, das ein command-Objekt enthält. Geben Sie im command-Objekt name für den auszuführenden Befehl als Zeichenfolge, parameters als Objekt und sessionId als Zeichenfolge an. In diesem Fall ist der Wert NULL, da sessionId noch nicht festgelegt wurde. sessionId wird in der Antwort zurückgegeben, die wie folgt aussieht:

{
  "response":{
    "sessionId":"[session identifier]",
    "status":"success",
    "value":{
      "browserName":"Internet Explorer", 
      "browserVersion":"11",
      "platformName":"windows",
      "platformVersion":"8.1",
      "secureSsl":true,
      "takesElementScreenshot":true,
      "takesScreenshot":true,
      "-ms-requireWindowFocus":true
    }
  }
}

Unter dem value-Objekt sind bestimmte Browsereigenschaften und Funktionen angegeben, z. B., ob das System Bildschirmfotos erstellen oder SSL behandeln kann. In dieser Entwicklungsphase von WebDriver für Internet Explorer ist die einzige Funktion, die Sie im newSession-Befehl festlegen können, -ms-requireWindowFocus. Bei true erhält das Browserfenster der Sitzung jedes Mal, wenn ein Befehl ausgeführt wird, auf Ihrem Desktop den Fokus. Falls auf false festgelegt, werden alle Befehle im Browser im Hintergrund ausgeführt.

Senden von Befehlen an den Browser

Im Beispielprojekt wird sessionId aus der Antwort extrahiert und in allen nachfolgenden Befehlen verwendet, die wie folgt lauten:

  • Laden von Bing.com
  • Suchen der zugehörigen Suchbegriffeingabe
  • Ausführen einer Suche durch Ausführen der Tastaturanschläge für den Suchbegriff, gefolgt vom Tastaturanschlag für die EINGABETASTE

Der Befehl zum Laden einer neuen URL im Browser lautet get.

const string getCommand = @"
{
  ""command"": {
    ""name"": ""get"",
    ""parameters"": {
      ""url"": ""https://bing.com""
    },
    ""sessionId"": ""{sessionId}""
  }
}";

Er verfügt über einen einzelnen Parameter, die URL. Während des Schreibvorgangs gibt es keine Pause, in der gewartet wird, dass die Seite in WebDriver geladen wird. Das Beispielskript fragt also die Seite für 20 Sekunden jede Sekunde mit einem executeScript-Befehl ab, um festzustellen, ob die Seite geladen wurde, bevor es fortfährt (siehe die WaitForPageToLoad()-Methode des Beispiels).

Anschließend ermittelt das Skript das Bing-Eingabefeld für Suchbegriffe.

const string findElementCommand = @"
{
  ""command"": {
    ""name"": ""findElement"",
    ""parameters"": {
      ""locator"": ""css selector"",
      ""value"": ""input[name=q]""
      },
    ""sessionId"": ""{sessionId}""
  }
}";

Der findElement-Befehl gibt das erste Element zurück, das den Parametern entspricht, und eine eindeutige ID, über die zukünftige Befehle an das Element gerichtet werden können. Wenn Sie alle mit den Parametern übereinstimmenden Elemente in einem Array erhalten möchten, verwenden Sie findElements.

Die Parameter für findElement und findElements sind locator, der die Art des Abgleichs definiert, und value, der definiert, was abgeglichen werden soll. In diesem Fall wird eine CSS-Auswahl verwendet, um ein input-Element zu ermitteln, bei dem name „q“ entspricht.

Andere derzeit verfügbare Locatortypen sind:

  • id: Eine genaue Entsprechung des id-Attributs des Elements.
  • link text: Alle Links, die dem Text im value-Parameter exakt entsprechen.
  • partial link text: Alle Links, die den Text im value-Parameter enthalten.

Der letzte vom Beispielskript gesendete Befehl ist sendKeys.

const string sendKeysCommand = @"
{
  ""command"": {
    ""name"": ""sendKeys"",
    ""parameters"": {
      ""id"": ""{elementId}"",
      ""keysToSend"": [""W"", ""e"", ""b"", ""D"", ""r"", ""i"", ""v"", ""e"", ""r"", ""\uE007""]
      },
    ""sessionId"": ""{sessionId}""
  }
}";

In diesem Befehl entspricht der id-Parameter dem Wert, der in der Antwort auf den findElement-Befehl zurückgegeben wurde. Der keysToSend-Parameter enthält ein Array von zehn Tastaturanschlägen: „WebDriver“ sowie den Zeichentypcode für EINGABE.

Wenn alles einwandfrei funktioniert, werden in dem in Reaktion auf den newSession-Befehl geöffneten Browserfenster jetzt die Bing.com-Suchergebnisse für „WebDriver“ angezeigt.

Das Beispiel wird an dieser Stelle beendet, die nächsten beiden logischen Schritte könnten aber darin bestehen, mit dem takeScreenshot-Befehl ein Bildschirmfoto zu erstellen und die Sitzung dann mit close zu schließen.

Nächste Schritte

Nachdem Sie jetzt wissen, wie Sie Internet Explorer Developer Channel mit WebDriver steuern, können Sie die vollständige Liste unterstützter WebDriver-Befehle erkunden. Nachdem Sie die Befehle getestet haben, würden wir uns freuen, wenn Sie uns über Microsoft Connect Feedback senden würden. Wir schätzen Ihre Fehlerberichte, würden uns aber ebenfalls freuen zu erfahren, wenn Ihnen etwas besonders gut gefallen hat.

Verwandte Themen

API-Referenz zu WebDriver

IIEWebDriverManager

Download von Internet Explorer Developer Channel für Windows 8.1

Download von Internet Explorer Developer Channel für Windows 7 SP1