gpt4 book ai didi

javascript - 如何使用 selenium-webdriver 正确添加 cookie?

转载 作者:行者123 更新时间:2023-11-30 15:02:36 24 4
gpt4 key购买 nike

我正在尝试使用 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 的源代码,并能够使用调试器发现将构造正确的 cookie 字符串,并且 enqueued here .

如何正确添加 cookie 以便驱动程序实例使用它?


对于那些对 async/await 感到疑惑的人,我已经使用以下方法禁用了托管 promise :

webdriver.promise.USE_PROMISE_MANAGER = false;

最佳答案

方法 addCookie 将 cookie 添加到当前域,因此您首先必须导航到目标 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

关于javascript - 如何使用 selenium-webdriver 正确添加 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46281885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com