Winkelmesser: text der Warnung?
Ich bin, meine Prüfung Winkel-app mit Winkelmesser. Ich habe mir durch die docs und finde keine Weg, um den text der Warnung. Es ist nicht ein element in den DOM per se (zumindest nicht, dass ich herausfinden kann; wenn es gibt eine Warnung, Chrome inspector nicht zulassen, dass Sie überprüfen Sie es). Wie würde ich testen, dass eine Warnung ist, die richtige Nachricht? Oder auch, dass einer vorhanden ist?
Bearbeiten
Hier ist mein code. HTML:
<button id='alertButton' data-ng-click='ngAlert()'>Button</button>
JS:
$scope.ngAlert = function(){
window.alert('Hello');
};
Winkelmesser spec:
describe('alert', function(){
var ptor = protractor.getInstance();
beforeEach(function(){
button = $('#alertButton');
button.click();
});
it('tells the alert message', function(){
expect(button.getText()).toEqual('Button');
});
});
Wenn ich eine Behauptung auf die Schaltfläche text wie diesen:
it('tells the alert message', function(){
expect(button.getText()).toEqual('Button');
});
Es geht. Aber wenn ich versuche zu Lesen, eine Warnung wie diese:
it('tells the alert message', function(){
var alertDialog = ptor.switchTo().alert();
expect(alertDialog.getText()).toEqual('Hello');
});
Bekomme ich diesen Fehler:
$ Winkelmesser spec/e2e/conf.js Mithilfe der selenium-server auf
http://localhost:4444/wd/hub .FAusfälle:
1) alert erzählt die alert-Nachricht:
NoSuchAlertError: keine Warnung öffnen (Session info: chrome=30.0.1599.101) (Treiber info: chromedriver=2.2,Plattform=Mac OS
X 10.9.0 x86_64) (ACHTUNG: Der server lieferte keine stacktrace
Informationen) - Befehl Dauer-oder Zeitlimit: 3 Millisekunden Build info:
version: '2.35.0', revision: 'c916b9d', time: '2013-08-12 15:42:01'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version:
'10.9', java.version: '1.6.0_65' Session ID:
edbaa752eb14ad45f7e961903b69a466 Fahrer-info:
org.openqa.Selen.chrome.ChromeDriver Fähigkeiten [{platform=MAC,
acceptSslCerts=true, javascriptEnabled=true, browserName=Chrom,
chrome={chromedriverVersion=2.2}, drehbar=false,
locationContextEnabled=true, version=30.0.1599.101,
cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true,
browserConnectionEnabled=false, nativeEvents=true,
webStorageEnabled=true, applicationCacheEnabled=false,
takesScreenshot=true}]Fertig in 2.125 Sekunden 2 tests, 2 Behauptungen, 1 Fehler
/usr/local/lib/node_modules/Winkelmesser/node_modules/selenium-webdriver/lib/webdriver/Versprechen.js:1542
werfen Fehler;
^ NoSuchAlertError: keine Warnung öffnen
Aber ich habe es getestet auf der Seite und es funktioniert, und der test kann klar finden die Schaltfläche in der DOM. Also entweder die click()
Funktion nicht funktioniert, oder etwas anderes Los ist?
InformationsquelleAutor nickcoxdotme | 2013-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem test, Holen Sie sich die aktuellen Winkelmesser-Instanz und verwenden Sie
switchTo().alert()
Zugriff auf diealert
Dialogfeld:Beachten Sie, dass Winkelmesser ist im Grunde nur ein wrapper für Selenium WebDriver so, soweit ich weiß, alles, was Sie tun können, mit Selenium WebDriver, die Sie tun können, mit Winkelmesser.
Bearbeitet werden, um den vollständigen test:
Ist es möglich, dass Ihre app ist immer noch initializing an dem Punkt, dass der test ausgeführt wird, das würde erklären, warum kein dialog scheint zu erscheinen. Sicherzustellen, dass Ihre app ist "ready to go" und kann tatsächlich die Warnung angezeigt, bevor Sie Ihre Behauptung. Hoffe, das hilft!
Klar es ist keine Warnmeldung vorhanden, wenn der einzelne test ausgeführt wird. Es muss etwas anderes passiert sein. Der erste Testfall, wie haben Sie vor, werfen einen
unexpected alert open
in diesem Szenario, da diebeforeEach
sollte der Auslöser für den dialog. Ist dies Ihre eigentliche test-code, oder eine vereinfachte? Ich habe, erweitert meine Antwort auch den vollständigen test, der arbeitet richtig für mich. Ein Unterschied zu beachten, ist wie ich finde das button-element, also den "Winkelmesser".Wow. Habe ich eingefügt, von Ihrem genauen Wortlaut in meinem spec-Datei, und es ist immer noch sagen: kein Alarm, obwohl durch drücken der Schaltfläche in der browser eine Warnung auslöst. (Über die Suche nach dem element, hatte ich auch schon versucht Ihren Weg, aber die docs erwähnt etwas, was ich dachte, war toll: "Sie können auch verwenden plain old WebDriver Strategien, wie die durch.id.css. Da das Auffinden von CSS-Selektor ist so üblich ist, wird die Globale variable $ ist ein alias für das element.durch.css.") Wenn es dich interessiert, hier ist der code.
Auch Sie haben Ihren code in eine Geige oder irgendetwas, so dass ich konnte einen Blick?
Ich habe gerade ein test, um zu Winkelmesser, das zeigt ein Beispiel für die Verwendung von Warnungen. Check out github.com/angular/protractor/commit/...
InformationsquelleAutor Colin Brock
Müssen Sie warten, bis der browser zum öffnen der Alarm. Beispiel mit Winkelmesser 2.2.0:
InformationsquelleAutor Uli