Я пытаюсь написать тесты на единичные кости, используя selenium-webdriver
. Чтобы правильно протестировать мое приложение, мне нужно подготовить каждый тестовый пример с файлом cookie.
Я пытаюсь сделать следующее:
it('should set cookies', async function() {
const driver = new webdriver.Builder().forBrowser('chrome').build();
driver.manage().window().setSize(800, 600);
await driver.manage().addCookie({
name: 'KEY',
value: 'COOKIE-VALUE',
domain: '.my.domain',
path: '/',
secure: false
});
await driver.get('http://test.my.domain');
// test following....
});
Мои тесты выполняются (т. addCookie
не выбрасывает/отклоняет), но установленные значения cookie не будут использоваться, когда браузер сделает запрос против моего приложения.
Когда я пытаюсь зарегистрировать установленные файлы cookie, например:
await driver.manage().addCookie({
name: 'KEY',
value: 'COOKIE-VALUE',
domain: '.my.domain',
path: '/',
secure: false
});
const set = await driver.manage().getCookies();
console.log('set', set);
он скажет мне, что cookie не было установлено:
set []
Я также selenium-webdriver
в источники selenium-webdriver
и умею использовать отладчик, чтобы выяснить, будет ли построена правильная строка файла cookie и выставлена в очередь.
Как правильно добавить файл cookie, чтобы он использовался экземпляром драйвера?
Для тех, кто интересуется async/await
, я отключил управляемые обещания, используя:
webdriver.promise.USE_PROMISE_MANAGER = false;
Метод addCookie
добавляет куки файл в текущий домен, поэтому сначала вы должны перейти к целевому URL-адресу, чтобы установить домен:
await driver.get('http://test.my.domain');
await driver.manage().addCookie({
name: 'KEY',
value: 'COOKIE-VALUE',
domain: 'test.my.domain',
path: '/',
secure: false
});
https://w3c.github.io/webdriver/webdriver-spec.html#add-cookie
get
=>addCookie
=>get
или для этого есть ярлык?get
если текущий домен не является ожидаемым для файла cookie. Затем файл cookie сохраняется и отправляется на сервер до тех пор, пока браузер остается открытым.