2014-06-10 18 views
10

Unsere (PHP) Anwendung benötigt bestimmte Cookies, um eine Angular.js Client App zu laden. Wenn die Cookies nicht gesetzt sind, wird eine Ausnahme ausgelöst und eine Fehlerseite angezeigt.Setzen von Cookies vor browser.get

Das bedeutet, um E2E-Tests ausführen zu können, müssen wir die Cookies setzen, aber das Folgende schlägt fehl, weil Winkelmesser versucht, Angular direkt nach dem Aufruf browser.get zu finden (es ist nicht da, weil die Ausnahme ausgelöst wurde).

browser.get('http://' + domain + '/'); 
browser.manage().addCookie('foo', 'boo', '/', domain); 

Ich versuchte browser.get nach den Cookies rufe Einstellung:

browser.manage().addCookie('foo', 'boo', '/', domain); 
browser.get('http://' + domain + '/'); 

Aber das erzeugt die folgenden Fehler:

Failed to set the 'cookie' property on 'Document': Cookies are disabled inside 'data:' URLs.

Gibt es eine Möglichkeit, wie man mit dieser Situation umgehen? Vielleicht, um Gradmesser zu informieren, nicht nach Winkeln zu suchen, wenn man den ersten browser.get Anruf tätigt oder irgendwie Cookies für unsere Domain setzt, bevor er die URL ruft?

Antwort

19

fand ich die Lösung in der Protractor Getting Started doc:

browser.driver.get('http://' + domain + '/'); 
browser.manage().addCookie('foo', 'boo', '/', domain); 

Notiere die browser.driver.get statt browser.get. Dies verhindert, dass Protractor nach der Angular App sucht und Cookies gesetzt werden können. Ich benutze dann eine andere browser.get innerhalb von it Anweisung.

+1

Vielen Dank für das Schreiben des Beispiels zur Verwendung von webdriver.WebDriver.Options durch Aufruf von '.manage()'. Da der von Ihnen angegebene Link keine Hinweise darauf enthält, wie diese spezifische API verwendet werden soll. –

+1

Ich habe festgestellt, dass die Dokumentation des Winkelmessers im Allgemeinen unvollständig oder falsch ist, Beispiele wie diese sind äußerst hilfreich. Vielen Dank. –

Verwandte Themen