我们的 (PHP) 应用程序需要设置某些 cookie 才能加载 Angular.js 客户端应用程序。如果未设置 cookie,则会引发异常并显示错误页面。
这意味着为了运行 E2E 测试,我们需要设置 cookie,但以下失败,因为 Protractor 试图在 browser.get
之后立即找到 Angular。调用(它不在那里,因为抛出了异常)。
browser.get('http://' + domain + '/');
browser.manage().addCookie('foo', 'boo', '/', domain);
我试着打电话
browser.get
设置 cookie 后:browser.manage().addCookie('foo', 'boo', '/', domain);
browser.get('http://' + domain + '/');
但这会产生以下错误:
Failed to set the 'cookie' property on 'Document': Cookies are disabled inside 'data:' URLs.
有没有办法如何处理这种情况?也许是告诉 Protractor 在做第一个时不要检查 Angular
browser.get
在调用获取 URL 之前调用或以某种方式为我们的域设置 cookie?
最佳答案
我在 Protractor Getting Started 中找到了解决方案文档:
browser.driver.get('http://' + domain + '/');
browser.manage().addCookie('foo', 'boo', '/', domain);
请注意
browser.driver.get
而不是 browser.get
.这将阻止 Protractor 寻找 Angular 应用程序并且可以设置 cookie。然后我使用另一个 browser.get
内部 it
陈述。
关于angularjs - 在 browser.get 之前设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138986/