web-dev-qa-db-ja.com

browser.getの前にCookieを設定する

私たちの(PHP)アプリケーションでは、Angular.jsクライアントアプリをロードするために特定のCookieを設定する必要があります。 Cookieが設定されていない場合、例外がスローされ、エラーページが表示されます。

つまり、E2Eテストを実行するには、Cookieを設定する必要がありますが、分度器がbrowser.get呼び出しの直後にAngular)を見つけようとしているため、以下は失敗します(例外がスローされました)。

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

Cookieを設定した後、browser.getを呼び出そうとしました。

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

ただし、これにより次のエラーが発生します。

「ドキュメント」に「cookie」プロパティを設定できませんでした:「data:」URL内でCookieが無効になっています。

この状況に対処する方法はありますか?おそらく、最初のbrowser.get呼び出しを行うときにAngularをチェックしないように、または何らかの方法でURLを取得する前にドメインにCookieを設定するように、分度器に指示しますか?

15
Petr Peller

分度器入門 ドキュメントで解決策を見つけました:

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

browser.driver.getではなくbrowser.getに注意してください。これにより、分度器がAngularアプリを探すのを防ぎ、Cookieを設定できます。次にitステートメント内で別のbrowser.getを使用します。

25
Petr Peller