Я пытаюсь установить файл cookie в тестовом случае транспортира. Мы используем транспортир 3.3.0, Угловое 1.5.x и Node.js 6.9.1Настройка куки-файлов в транспортирщике
Это спецификация:
(function() {
'use strict';
describe('Dummytest', function() {
beforeEach(function() {
browser.get('./');
});
it('should set a cookie', function() {
browser.manage().addCookie("test", "fail_cookie", '/', 'localhost');
});
});
})();
Это сообщение об ошибке я получаю:
Message: Failed: {"errorMessage":"Unable to set Cookie","request":{"headers":{"Accept-Encoding":"gzip,deflate","Connection":"Keep-Alive","Content-Length":"165","Content-Type":"application/json; charset=utf-8","Host":"localhost:45556","User-Agent":"Apache-HttpClient/4.5.1 (Java/1.8.0_77)"},"httpVersion":"1.1","method":"POST","post":"{\"cookie\":{\"path\":\"/\",\"domain\":\"localhost\",\"name\":\"test\",\"httpOnly\":false,\"hCode\":3556498,\"secure\":false,\"value\":\"fail_cookie\",\"class\":\"org.openqa.selenium.Cookie\"}}","url":"/cookie","urlParsed":{"anchor":"","query":"","file":"cookie","directory":"/","path":"/cookie","relative":"/cookie","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/cookie","queryKey":{},"chunks":["cookie"]},"urlOriginal":"/session/68875d10-f7b4-11f6-8f37-71161903ed83/cookie"}} Build info: version: '2.52.0', revision: '4c2593c', time: '2016-02-11 19:06:42' System info: host: 'XXXXXXXXX', ip: '10.##.##.230', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_77' Driver info: driver.version: unknown Stack: UnableToSetCookieError: {"errorMessage":"Unable to set Cookie","request":{"headers":{"Accept-Encoding":"gzip,deflate","Connection":"Keep-Alive","Content-Length":"165","Content-Type":"application/json; charset=utf-8","Host":"localhost:45556","User-Agent":"Apache-HttpClient/4.5.1 (Java/1.8.0_77)"},"httpVersion":"1.1","method":"POST","post":"{\"cookie\":{\"path\":\"/\",\"domain\":\"localhost\",\"name\":\"test\",\"httpOnly\":false,\"hCode\":3556498,\"secure\":false,\"value\":\"fail_cookie\",\"class\":\"org.openqa.selenium.Cookie\"}}","url":"/cookie","urlParsed":{"anchor":"","query":"","file":"cookie","directory":"/","path":"/cookie","relative":"/cookie","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/cookie","queryKey":{},"chunks":["cookie"]},"urlOriginal":"/session/68875d10-f7b4-11f6-8f37-71161903ed83/cookie"}} Build info: version: '2.52.0', revision: '4c2593c', time: '2016-02-11 19:06:42' System info: host: 'XXXXXXXXXXXXX', ip: '10.##.##.230', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_77' Driver info: driver.version: unknown at WebDriverError (C:\Users\[username]\dev\project\node_modules\selenium-webdriver\error.js:27:5)
Что я делаю неправильно?
EDIT:
Я сделал некоторые дальнейшие эксперименты. Обратите внимание, что я изменил домен и что нет browser.get
до успешного чтения/записи cookie.
(function() {
'use strict';
describe('Dummytest', function() {
it('should set a cookie', function() {
browser.manage().addCookie("test", "fail_cookie", '/', '127.0.0.1');
browser.manage().getCookie('test').then(function(cookie) {
console.log('cookie test', cookie);
browser.get('./');
browser.manage().getCookie('test').then(function(cookie) {
console.log('cookie test 2', cookie);
});
});
});
});
})();
И это выход я получаю:
cookie test { path: '/', domain: '127.0.0.1', name: 'test', httpOnly: false, hCode: 3556498, secure: false, value: 'fail_cookie', class: 'org.openqa.selenium.Cookie' } cookie test 2 null
Как вы можете видеть, что печенье не установлен для домена я достигаю при вызове browser.get('./')
. Как установить cookie для этого домена, не вызывая ошибку в моем исходном вопросе?
EDIT 2:
Найдено еще один вопрос (Setting cookies before browser.get), который говорит, чтобы позвонить browser.driver.get
первым, а затем установить печенье, но сделать это я получаю тот же UnableToSetCookieError
, как я всегда получал. Таким образом, решение - это нечто другое.
EDIT 3:
На полу связанной ноты я проявляющая реальные трудно найти документацию для addCookie
функции и ее параметрами. Особенно сейчас, так как в последней версии (от 2016-01-31) версии транспортира он ожидает объект, а не список параметров. Но я, наконец, нашел его и думал, что я мог бы также включить ссылку здесь: https://github.com/SeleniumHQ/selenium/blob/022644c47c643ce6fe797d65e074329190129c1b/javascript/node/selenium-webdriver/lib/webdriver.js#L1075
EDIT 4:
Подойдя ближе! Настройка домена на .localhost
(обратите внимание на точку (.) В начале), похоже, работает. Будут проводить дальнейшие расследования и отчитываться. Тем временем, если кто-нибудь скажет мне, почему точка важна, и почему эта точная работа домена, я был бы очень благодарен :)
Взгляните на это: http://stackoverflow.com/questions/489369/can-i-use-localhost-as-the-domain-when-setting-an-http-cookie. Возможно, это может помочь? – cnishina
Привет @Tobbe, Есть новости? Может быть, вы можете ответить на свой вопрос ради обмена результатами? Я читал, что есть проблемы с использованием 'localhost', и что использование« 127.0.0.1 »более целесообразно, но я все еще новичок и стараюсь сохранить сеансы живыми. – firepol
Crap. Извините, забыл вернуться к этому, и теперь я забыл, что это за решение :(Теперь я с новой компанией и больше не имею доступа к коду, где это было необходимо. – Tobbe