使用add_cookie时,WebDrive中的奇怪异常

时间:2016-02-22 10:23:39

标签: python python-2.7 selenium selenium-webdriver urllib2

我的代码是这样的:

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)

有人可以帮我理解我做错了什么吗? 感谢

2 个答案:

答案 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接受了一个命令,其他很多键也很好。