gpt4 book ai didi

google-chrome - 如何使用 webdriver 和 Chrome 在本地主机上可靠地设置 cookie?

转载 作者:行者123 更新时间:2023-12-04 18:39:44 25 4
gpt4 key购买 nike

根据我的经验,当使用 webdriver(通过 protractor )将 cookie 注入(inject) Firefox 上的浏览​​器 session 时,这可以正常工作:

browser.manager().addCookie(...)

其中“...”是一个“httpOnly”本地 session cookie,用于指示用户已登录。

在 Chrome 浏览器上运行相同的代码(使用直接的 ChromeDriver)不起作用。首先,有 localhost cookie 异常(exception):
Message:
InvalidCookieDomainError: invalid cookie domain: invalid domain:"localhost"
(Session info: chrome=41.0.2272.89)
(Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Linux 3.13.0-45-generic x86_64)
Stacktrace:
InvalidCookieDomainError: invalid cookie domain: invalid domain:"localhost"
(Session info: chrome=41.0.2272.89)
(Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Linux 3.13.0-45-generic x86_64)

即使我可以解决 localhost 问题(例如,通过设置完全限定的域),Chrome 也会忽略我对 cookie 的更改。

我在 Linux 上运行,使用 Protractor 2.0.0、google-chrome 41.0.xxx 和 chromedriver 2.14。

最佳答案

有两种解决方法适用于 Chrome,并且不会破坏 Firefox。

首先,使用 null而不是 localhost作为 cookie 域。 Chrome 会将其视为“与当前页面的域相同的页面”。这很好,因为您需要先让浏览器访问一个页面,然后才能设置 cookie。

其次,在设置新 cookie (browser.manager().deleteCookie()) 之前清除现有 cookie。 Chrome 不允许(静默)通过 webdriver API 更改某些 cookie。通过删除 cookie,您就可以设置它。

// cookieObj is a "tough.Cookie" instance in my case
function setCookie(cookieObj) {
var domain = cookieObj.domain;
if (domain === 'localhost') {
domain = null;
}

var mgr = browser.manage();
var cName = cookieObj.key;

var cookieProm = mgr.deleteCookie(cName).then(function() {
return mgr.addCookie(
cName,
cookieObj.value,
cookieObj.path,
domain,
cookieObj.secure,
cookieObj.expiryTime());
});

cookieProm.then(function() {
mgr.getCookie(cName).then(function(cookie) {
console.log("Actual cookie", cName, "::", cookie);
expect(cookie.value).toBe(cookieObj.value);
});
});

return cookieProm;
}

关于google-chrome - 如何使用 webdriver 和 Chrome 在本地主机上可靠地设置 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29312226/

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