Как правильно добавить файл cookie с помощью selenium-webdriver?

1

Я пытаюсь написать тесты на единичные кости, используя 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;
Теги:
mocha
selenium
selenium-webdriver
selenium-chromedriver

1 ответ

2
Лучший ответ

Метод 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

  • 0
    Означает ли это, что моему серверу нужен браузер для отправки файла cookie, который мне нужен для использования get => addCookie => get или для этого есть ярлык?
  • 0
    Я не знаю ни одного ярлыка. Вам нужно только вызвать get если текущий домен не является ожидаемым для файла cookie. Затем файл cookie сохраняется и отправляется на сервер до тех пор, пока браузер остается открытым.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню