Browser.manage()。addCookie()返回错误'name'

时间:2017-11-10 07:19:52

标签: angularjs cookies protractor automated-tests

当我尝试在量角器中设置cookie时,我收到以下错误消息:

  

失败:无效参数:缺少'name'
  (会话信息:chrome = 61.0.3163.100)

enter image description here

我使用下面的不同代码在量角器中设置cookie。但是他们都没有工作。

案例1:

browser.get('http://localhost:8080');
browser.driver.manage().addCookie('test', 'test');

案例2:

browser.get('http://localhost:8080');
protractor.browser.manage().addCookie({ 'name': 'test', 'value': 'test', 'path': '/', 'domain': 'localhost' });

案例3:

browser.get('http://localhost:8080');
browser.manage().addCookie('test', 'test', '/', 'localhost');

我正在使用量角器5.2版运行代码。

任何人都可以帮助我吗?提前谢谢。

3 个答案:

答案 0 :(得分:6)

我解决了我的问题。下面的代码对我有用。

(browser.manage() as any).addCookie({ name: 'test', value: 'test', domain: 'localhost' });

答案 1 :(得分:0)

browser.get('http://127.0.0.1:8000');
browser.manage().addCookie('test', 'test', '/', '127.0.0.1');

问题在于使用localhost,而是使用127.0.0.1

请进一步阅读有关量角器here

的问题

答案 2 :(得分:0)

相对于browser.driver.get(),更喜欢使用browser.get()

只要browser.driver.get()返回一个承诺,您就应该考虑到它:

browser.driver.get('http://' + domain + '/').then(() => {
  browser.manage().addCookie({name: 'foo', value: 'boo'});
});

还请注意,在这种情况下,您无需将域值传递给addCookie,因为量角器默认情况下将使用当前域。这还将解决Mohan Ram提到的localhost的问题