即使我在正确的域上,Selenium addCookie也会获得无效的Cookie域异常

时间:2013-10-03 00:37:28

标签: java selenium groovy geb

所以我正在尝试使用Selenium / Geb将以前保存的cookie加载到我的网络驱动程序中。首先,我转到域,然后尝试添加cookie。但cookie域和url域不会相互注册:

Caught: org.openqa.selenium.InvalidCookieDomainException: 
You may only add cookies that would be visible to the current domain: .domain=.example.com => .www.example.com
Build info: version: '2.35.0', revision: '8df0c6bedf70ff9f22c647788f9fe9c8d22210e2', time: '2013-0  8-17 12:46:41'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.2.0-48-generic', java.version:   '1.6.0_27'
Driver info: driver.version: unknown

似乎Cookie的域名为.example.com,而我访问http://example.com时所访问的域名为.www.example.com。我能想到的唯一解决方案是覆盖一些欺骗我当前域的方法,但我不知道如何去做。

2 个答案:

答案 0 :(得分:0)

我有一个类似的问题,我得到的“你可能只为当前域设置cookie”错误没有明显的原因。

我通过去除除名称和值之外的所有参数的cookie来解决它:

(Python)的

cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    print cookie
    new_cookie={}
    new_cookie['name']=cookie['name']
    new_cookie['value']=cookie['value']
    driver.add_cookie(new_cookie)

答案 1 :(得分:0)

问题很老,也许给出的答案曾经有效,但在 Selenium 3.140.0 中,剥离域并仅添加名称和值仍会引发无效的 cookie 域异常。

对我有用的是 browser.get,然后使用与加载的页面相同的域执行 browser.add_cookie。

我使用会话 cookie 绕过登录页面确认了这一点。