我的代码是这样的:
response = urllib2.urlopen(request)
cookieValue = response.info()["Set-Cookie"]
cookie = {'Set-Cookie': cookieValue}
driver = webdriver.Chrome()
driver.get(innerPageOfTheSameRequest)
print cookie
driver.add_cookie(cookie)
Cookie按预期打印:
{' Set-Cookie':' SessionID_R3 = dXM0ChrdPhYUhfL1drI2eP9r6Wjha8tX943Sv8CZp0v6LQ2v1 / m u3y / h839tX0zGJ36VtBsIY4EJaxlr78g9gokEfz6HA7wvXb7ECo8nRjXjO0 +泰/ E5IC64BseItDk; PA TH = /;仅Http;'}
但我在最后一行得到了一个豁免:
追踪(最近一次通话): 文件" p.py",第80行,in driver.add_cookie(饼干) 文件" C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py",第634行,在add_cookie中 self.execute(Command.ADD_COOKIE,{' cookie':cookie_dict}) 文件" C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py",第201行,执行 self.error_handler.check_response(响应) 文件" C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py" ,第194行,在check_response中 提出exception_class(消息,屏幕,堆栈跟踪) selenium.common.exceptions.WebDriverException:消息:未知错误:cookie的名称缺失或无效:" undefined" (会话信息:chrome = 48.0.2564.116) (驱动程序信息:chromedriver = 2.21.371459(36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform = Windows NT 6.1 SP1 x86_64)
有人可以帮我理解我做错了什么吗? 感谢
答案 0 :(得分:6)
您的Cookie没有正确的格式。根据{{3}},add_cookie()
的论点是
cookie_dict:一个字典对象,带有必需的键 - “name”和 “值”;
您既没有这些密钥,也没有Set-Cookie标头。
你的cookie应该是
{'name': SessionID_R3,
'value' : 'dXM0ChrdPhYUhfL1drI2eP9r6Wjha8tX943Sv8CZp0v6LQ2v1/m u3y/h839tX0zGJ36VtBsIY4EJaxlr78g9gokEfz6HA7wvXb7ECo8nRjXjO0+Ty/E5IC64BseItDk',
'path' : '/'}
我不确定您是否可以获得HttpOnly
,因为文档中没有提及。
答案 1 :(得分:0)
我使用类似的代码遇到相同的错误
pickle.dump(driver.get_cookies(), open(cookie_file, "wb"))
cookies = pickle.load(open(cookie_file, "rb"))
driver.add_cookie(cookies)
在我有Cookie还是有很多Cookie 的情况下,我并没有密切注意。
for c in cookies:
driver.add_cookie(c)
解决了问题。 HttpOnly
在这里是红鲱鱼。 add_cookie接受了一个命令,其他很多键也很好。