2015-01-29 4 views
16

Ich habe einen seltsamen Fehler nach dem Ausführen meiner Tests im eckigen Projekt Error: Error while waiting for Protractor to sync with the page: "angular could not be found on the window". Meine Protractor Konfiguration sieht wie folgt aus:Winkelmesser E2E Winkel "Winkel konnte nicht auf dem Fenster gefunden werden"

require('coffee-script').register(); 

exports.config = { 
    seleniumServerJar: './node_modules/protractor/selenium/selenium-server-standalone-2.39.0.jar', 
    seleniumAddress: 'http://localhost:4444/wd/hub', 

    capabilities: { 
    browserName: 'chrome' 
    //'chromeOptions': { 
    // 'args': ['--disable-extensions'] 
    //} 
    }, 

    specs: [ 
    '*_spec.coffee' 
    ], 

    allScriptsTimeout: 10000000000, 
    baseUrl: 'http://localhost:9003/', 

    jasmineNodeOpts: { 
    isVerbose: false, 
    showColors: true, 
    includeStackTrace: true, 
    defaultTimeoutInterval: 10000000000 
    } 
}; 

Und Test:

loginPage = require './pages/log_in_page' 

describe 'Log In', -> 

     it 'shows after login', -> 
     loginPage() 
     .setEmail('[email protected]') 
     .setPass('a46s75d4as765d4a6s7d54as76d5as74das76d5') 

Erhalten Sie Informationen ab Seite:

module.exports = -> 
     @email = element By.css '.test-i-login' 
     @password = element By.css '.test-i-password' 

     @setEmail = (name) => 
     @email.sendKeys(name) 
     this 

     @setPass = (number) => 
     @password.sendKeys(number) 
     this 
     this 

Es sind einige ähnliche Fragen auf Github, aber es didn I‘ Ich finde eine Lösung, die für mich funktioniert. Danke für die Antwort.

+0

Könnte es möglich sein, ausgearbeitet, dass das Fenster Sie sprechen werden, ist Non-Angular? Solch ein Fehler erscheint in einem solchen Fall –

Antwort

4

Der Winkelmesser wurde entwickelt, um Winkelanwendungen zu testen, dh Webseiten mit einem ng-app Tag im HTML-Text und Controller, die Angular Code in einer Javascript-Datei entsprechen.

Der Grund, warum Winkelmesser so nützlich ist, ist, dass Winkelanwendungen asynchron ausführen, was bedeutet, dass sie nicht immer fertig geladen werden, wenn die Webseite geladen wird. Die meisten Test-Frameworks würden versuchen, auf Dinge zu klicken, Dinge einzugeben usw., bevor die Seite vollständig fertig ist. Der Winkelmesser erkennt alle Winkelprozesse, die im Hintergrund ausgeführt werden, damit Sie nicht versehentlich etwas tun, bevor alles fertig ist.

Was Ihnen der Winkelmesser sagt ist, dass er keine Winkelprozesse auf der Seite gefunden hat. Ihre Seite funktioniert vielleicht gut, aber sie ist einfach nicht auf Winkeln angewiesen, wie sie der Winkelmesser erkennen kann.

Das bedeutet nicht, dass Winkelmesser die Seite nicht testen kann. Sie können auf reguläre WebDriver-Befehle zugreifen, indem Sie browser.driver.any_webdriver_command_here() verwenden. Sie werden nur die fantastischen Synchronisierungsfähigkeiten verpassen, die Ihnen das Unternehmen bietet.

+0

Nah, es war andere Sache, als Winkelmesser. Ich hatte meine Schluckaufgabe falsch laufen lassen und den Chromtreiberpfad falsch eingestellt, so dass es ohne Chromoperationen nichts machen konnte. –

2

Der Grund, warum dies passiert ist, weil ich die Installation des verchromten Pfades falsch gemacht hatte. Und deshalb bekam ich die Nachricht "eckig konnte nicht am Fenster gefunden werden". Das andere Problem, das ich hatte, war, dass ich webdriver manuell als Hintergrundprozess laufen lassen musste. Dies löst mit der rechten schluck Aufgabe machen (was ich falsch gemacht), dass so etwas wie folgt aussehen werden:

gulp.task ['test'], -> 
    runSequence start_server, run_protractor, end_server. 

es helfen, jemand Angenommen werde, die ähnliche (dumme) Probleme haben werden.

+0

Könnten Sie näher erläutern, wo Sie den verchromten Pfad geändert haben? Ein Beispiel für Ihre eigentliche Schluckaufgabe mit Code wäre ebenfalls hilfreich. Vielen Dank. –

14

Ändern framework Option in Winkelmesser Konfig zu 'jasmine2' behoben dieses Problem für mich.

Weitere Informationen finden Sie unter this thread.

+1

ja das hat bei mir funktioniert. Ich habe dieses Problem, nachdem ich auf Winkelmesser 2.0 aktualisiert habe. Fügen Sie einfach 'framework: 'jasmine2',' in die Datei conf.js ein – Malik

6

In meinem Szenario Login-Seite ist nicht eckig, versucht, die unten Art und Weise, für mich

browser.driver.findElement(By.id('username')).sendKeys('binnu'); 
Verwandte Themen