Selenium addCookie 出现无效 Cookie 域异常,即使我位于正确的域中

问题描述 投票:0回答:3

所以我尝试使用 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
。我能想到的唯一解决方案是覆盖某些方法来欺骗我当前的域,但我不知道如何去做。

java selenium groovy geb
3个回答
1
投票

我遇到了一个有点类似的问题,我无缘无故地收到“您只能为当前域设置 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)

0
投票

问题很旧,也许给出的答案曾经有效,但使用 Selenium 3.140.0,剥离域并仅添加名称和值仍然会抛出无效的 cookie 域异常。

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

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


0
投票

之前(有问题):

driver = webdriver.Chrome(service=service, options=options)

for cookie in exported_cookies:
    driver.add_cookie(cookie)

driver.get(url)

之后(没有问题):

driver = webdriver.Chrome(service=service, options=options)

driver.get(url) # Add driver.get() before set cookie 

for cookie in exported_cookies:
    driver.add_cookie(cookie)

driver.get(url)
© www.soinside.com 2019 - 2024. All rights reserved.