Looking for protractor Answers? Try Ask4KnowledgeBase
Looking for protractor Keywords? Try Ask4Keywords

protractorErste Schritte mit dem Winkelmesser


Bemerkungen

Der Winkelmesser ist ein durchgängiges Test-Framework für AngularJS-Anwendungen.

Bei dem Winkelmesser handelt es sich um einen Wrapper (auf der Oberseite aufgebaut) um Selenium WebDriver. Daher enthält er alle Funktionen, die im Selenium WebDriver verfügbar sind. Darüber hinaus bietet Protractor einige neue Locator-Strategien und -Funktionen, die für die Automatisierung der AngularJS-Anwendung sehr hilfreich sind. Beispiele sind Dinge wie: waitForAngular, By.binding, By.repeater, By.textarea, By.model, WebElement.all, WebElement.evaluate usw.

Versionen

Ausführung Daten freigeben
0.0.1 2016-08-01

Erster Test mit Winkelmesser

Der Winkelmesser benötigt nur zwei Dateien, um die erste Test-, Spezifikations- (Testcode-) und Konfigurationsdatei auszuführen. Die Spezifikationsdatei enthält Testcode und die andere enthält Konfigurationsdetails wie Spezifikationsdateipfad, Browserdetails, Test-URL, Rahmenparameter usw. Zum Schreiben des ersten Tests werden nur die Adresse des Selen-Servers und der Spezifikationsdateipfad angegeben Bei einem Timeout wird das Framework auf die Standardwerte gesetzt.

Der Standardbrowser für Protractor ist Chrome.

conf.js - Konfigurationsdatei

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js']
};
 

spec.js - Spezifikationsdatei ( Testcode )

describe('first test in protractor', function() {
  it('should verify title', function() {
    browser.get('https://angularjs.org');

    expect(browser.getTitle()).toEqual('AngularJS — Superheroic JavaScript MVW Framework');
  });
});
 

seleniumAddress - Pfad zum Server , auf den WebDriver Server ausgeführt wird .

specs - Ein Arrayelement, das den Pfad der Testdateien enthält. Die mehreren Pfade können durch kommagetrennte Werte angegeben werden.

beschreiben - Syntax aus Jasmin- Framework. describe Syntax sta

Installieren und Einrichten von Winkelmesser (unter Windows)

Voraussetzungen: Für den Winkelmesser müssen vor der Installation die folgenden Abhängigkeiten installiert werden:

  • Java JDK 1.7 oder höher
  • Node.js v4 oder höher

Installation:

Laden Sie Node.js von dieser URL herunter und installieren Sie sie: https://nodejs.org/de/

Um zu überprüfen, ob die Installation von Node.js erfolgreich ist, können Sie die Umgebungsvariablen überprüfen. Der 'Pfad' unter Systemvariablen wird automatisch aktualisiert.

Pfadvariable zum Überprüfen der Installation von Node.js


Sie können dies auch überprüfen, indem npm -version in der Eingabeaufforderung den Befehl npm -version eingeben, der die installierte Version npm -version .

Befehl zum Überprüfen der Installation von Node.js


Protractor kann jetzt auf zwei Arten installiert werden: lokal oder global.

Wir können den Winkelmesser in einem bestimmten Ordner oder in einem Projektverzeichnis installieren. Wenn wir in einem Projektverzeichnis installieren, sollten wir bei jeder Ausführung nur von diesem Speicherort aus ausführen.

Um lokal im Projektverzeichnis zu installieren, navigieren Sie zum Projektordner und geben Sie den Befehl ein

npm install protractor


Um Protractor global zu installieren, führen Sie den Befehl aus:

$ npm install -g protractor
 

Dadurch werden zwei Befehlszeilen-Tools installiert: protractor und webdriver-manager .
Führen Sie die protractor --version um sicherzustellen, dass der Winkelmesser erfolgreich installiert wurde.

webdriver-manager wird verwendet, um die Binärdateien des Browsertreibers herunterzuladen und den webdriver-manager starten.
Laden Sie die Browser-Treiber-Binärdateien herunter mit:

$ webdriver-manager update
 

Starten Sie den Selenserver mit:

$ webdriver-manager start
 

Führen Sie zum Herunterladen des Internet Explorer-Treibers den Befehl webdriver-manager update --ie in der Eingabeaufforderung aus. Dadurch wird IEDriverServer.exe in Ihrem Selenium-Ordner heruntergeladen

Ausstehende Tests

Mit dem Winkelmesser können Tests als anstehend festgelegt werden. Das bedeutet, dass der Winkelmesser den Test nicht ausführt, sondern stattdessen Folgendes ausgibt:

Pending:
1) Test Name
Temporarily disabled with xit
 

Oder, wenn mit xdescribe () deaktiviert:

Pending:
1) Test Name
No reason given
 

Kombinationen

  • Ein xit () in einem xdescribe () gibt die Antwort von xit () aus.
  • Ein xit () innerhalb eines fdescribe () wird immer noch als ausstehend behandelt.
  • Ein fit () innerhalb eines xdescribe () wird weiterhin ausgeführt, und ausstehende Tests geben nichts aus.

Winkelmesser: E2E-Test für Enterprise-Angular-Anwendungen

Winkelmesser Installation und Setup

Schritt 1 : Laden Sie NodeJS hier herunter und installieren Sie es. Stellen Sie sicher, dass Sie über die neueste Version des Knotens verfügen. Hier verwende ich Knoten v7.8.0. Sie müssen das Java Development Kit (JDK) installiert haben, um Selen ausführen zu können.

Schritt 2 : Öffnen Sie Ihr Terminal und geben Sie den folgenden Befehl ein, um den Winkelmesser global zu installieren.

npm install -g protractor
 

Dadurch werden zwei Tools installiert, z. B. der Winkelmesser- und der Web-Treiber-Manager. Sie können Ihre Winkelmesserinstallation mit folgendem Befehl überprüfen: protractor –version. Wenn Protractor erfolgreich installiert wurde, zeigt das System die installierte Version an (z. B. Version 5.1.1). Andernfalls müssen Sie die Installation erneut überprüfen. Schritt 3: Aktualisieren Sie den Webtreiber-Manager, um die erforderlichen Binärdateien herunterzuladen.

webdriver-manager update
 

Schritt 4: Der folgende Befehl startet einen Selenium Server. Bei diesem Schritt wird der Webtreiber-Manager im Hintergrund ausgeführt und alle Tests werden abgehört, die über den Winkelmesser ausgeführt werden.

webdriver-manager start Informationen zum Status des Servers finden Sie unter http://localhost:4444/wd/hub/static/resource/hub.html.

Schreiben des ersten Testfalls mit dem Winkelmesser:

Bevor wir mit dem Schreiben des Testfalls beginnen, müssen wir zwei Dateien vorbereiten, die Konfigurationsdatei und Spezifikationsdatei sind.

In der Konfigurationsdatei:

//In conf.js
exports.config = {
    baseUrl: ‘http://localhost:8800/adminapp’,
    seleniumAddress: ‘http://localhost:4444/wd/hub',
    specs: [‘product/product_test.js’],
    directConnect : true,
    capabilities :{
        browserName: ‘chrome’
    }
}
 

Grundlegendes zu den in der Konfigurationsdatei verwendeten Terminologien:

baseUrl - Eine Basis-URL für Ihre zu testende Anwendung.

SeleniumAddress - Um eine Verbindung zu einem Selenium Server herzustellen, der bereits läuft.

specs - Ort Ihrer Spezifikationsdatei

directConnect : true - Zum direkten Verbinden mit den Browsertreibern.

Fähigkeiten - Wenn Sie mit einem einzelnen Browser testen, verwenden Sie die Option "Funktionen". Wenn Sie mit mehreren Browsern testen, verwenden Sie das multiCapabilities-Array.

Weitere Konfigurationsmöglichkeiten finden Sie hier . Sie haben alle möglichen Begriffe mit ihrer Definition beschrieben.

In Spec-Datei:

//In product_test.js

    describe(‘Angular Enterprise Boilerplate’, function() {
      it('should have a title', function() {
        browser.get('http://localhost:8800/adminapp’);
        expect(browser.getTitle()).toEqual(‘Angular Enterprise Boilerplate’);
      });
    });
 

Grundlegendes zu den in der Spezifikationsdatei verwendeten Terminologien:

Standardmäßig verwendet Protractor das Jasmin-Framework für seine Testschnittstelle. Die Beschreibungs- und Es-Syntax stammt vom Jasmin-Framework. Hier erfahren Sie mehr. Erster Testfall läuft:

Bevor Sie den Testfall ausführen, vergewissern Sie sich, dass Ihr Webdriver-Manager und Ihre Anwendung auf verschiedenen Registerkarten Ihres Terminals laufen.

Führen Sie nun den Test aus mit:

Protractor app/conf.js
 

Sie sollten sehen, dass sich der Chrome-Browser mit Ihrer Anwendungs-URL öffnet und sich selbst schließt. Die Testausgabe sollte 1 Test, 1 Assertion, 0 Fehler sein.

Bravo! Sie führen Ihren ersten Testfall erfolgreich aus.

Selektive laufende Tests

Der Winkelmesser kann selektiv Testgruppen mit fdescribe () anstelle von compare () ausführen.

fdescribe('first group',()=>{
    it('only this test will run',()=>{
        //code that will run
    });
});
describe('second group',()=>{
    it('this code will not run',()=>{
        //code that won't run
    });
});
 

Der Winkelmesser kann innerhalb von Gruppen gezielt Tests ausführen, indem er anstelle von it () fit () verwendet.

describe('first group',()=>{
    fit('only this test will run',()=>{
        //code that will run
    });
    it('this code will not run',()=>{
        //code that won't run
    });
});
 

Wenn es in einem fdescribe () kein fit () gibt, wird jedes it () ausgeführt. Ein fit () blockiert jedoch it () -Aufrufe innerhalb der gleichen configure () oder fdescribe ().

fdescribe('first group',()=>{
    fit('only this test will run',()=>{
        //code that will run
    });
    it('this code will not run',()=>{
        //code that won't run
    });
});
 

Auch wenn ein fit () in einem description () anstelle eines fdescribe () enthalten ist, wird es ausgeführt. Außerdem wird jedes it () in einem fdescribe () ausgeführt, das kein fit () enthält.

fdescribe('first group',()=>{
    it('this test will run',()=>{
        //code that will run
    });
    it('this test will also run',()=>{
        //code that will also run
    });
});
describe('second group',()=>{
    it('this code will not run',()=>{
        //code that won't run
    });
    fit('this code will run',(){
        //code that will run
    });
});
 

Schreiben Sie einen Winkelmesser-Test

Öffnen Sie eine neue Befehlszeile oder ein neues Terminalfenster und erstellen Sie einen sauberen Ordner zum Testen.

Der Winkelmesser benötigt zwei Dateien, eine Spezifikationsdatei und eine Konfigurationsdatei.

Beginnen wir mit einem einfachen Test, der zu dem ToDo-Listenbeispiel auf der AngularJS-Website navigiert und der Liste ein neues ToDo-Element hinzufügt.

Kopieren Sie Folgendes in spec.js

beschreiben ('anglejs homepage todo list') function () {it ('sollte ein todo hinzufügen') function () {browser.get (' https://angularjs.org ');

element(by.model('todoList.todoText')).sendKeys('write first protractor test');
element(by.css('[value="add"]')).click();

var todoList = element.all(by.repeater('todo in todoList.todos'));
expect(todoList.count()).toEqual(3);
expect(todoList.get(2).getText()).toEqual('write first protractor test');

// You wrote your first test, cross it off the list
todoList.get(2).element(by.css('input')).click();
var completedAmount = element.all(by.css('.done-true'));
expect(completedAmount.count()).toEqual(2);});});