groovy Selenium addCookie获取无效Cookie域异常,即使我在正确的域上

af7jpaap  于 8个月前  发布在  其他
关注(0)|答案(3)|浏览(78)

因此,我尝试使用Selenium/Geb将以前保存的cookie加载到我的Web驱动程序中。首先,我后藤域,然后尝试添加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。我能想到的唯一解决方案是覆盖一些方法来欺骗我当前的域,但我不知道如何去做。

mzaanser

mzaanser1#

我有一个有点类似的问题,我得到了“你只能为当前域设置cookie”的错误,没有明显的原因。
我解决了这个问题,将cookie中除了name和value之外的所有参数都去掉了:
(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)
cgfeq70w

cgfeq70w2#

这个问题已经很老了,也许给出的答案曾经有效,但是在Selenium 3.140.0中,剥离域并且只添加名称和值仍然会抛出无效的cookie域异常。
对我来说,工作是浏览器.get,然后执行浏览器.add_cookie使用相同的域的页面加载。
我确认这使用会话cookie绕过登录页面。

b1payxdu

b1payxdu3#

之前(有问题):

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)

相关问题