【问题标题】:strange exception in WebDrive when add_cookie is used使用 add_cookie 时 WebDrive 出现奇怪的异常
【发布时间】:2016-02-22 10:23:39
【问题描述】:

我的代码是这样的:

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+Ty/E5IC64BseItDk;帕 th=/; HttpOnly;'}

但我在最后一行得到了一个例外:

Traceback(最近一次调用最后一次): 文件“p.py”,第 80 行,在 driver.add_cookie(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 中 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.WebDriverException:消息:未知错误:cookie 名称丢失或无效:“未定义” (会话信息:chrome=48.0.2564.116) (驱动信息:chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Windows NT 6.1 SP1 x86_64)

有人可以帮助我了解我做错了什么? 谢谢

【问题讨论】:

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


    【解决方案1】:

    您的 cookie 格式不正确。根据the documentationadd_cookie() 的参数是

    cookie_dict:一个字典对象,带有必需的键 - “名称”和 “价值”;

    您没有这两个键,而是有一个 Set-Cookie 标头。

    你的 cookie 应该是

    {'name': SessionID_R3,
     'value' : 'dXM0ChrdPhYUhfL1drI2eP9r6Wjha8tX943Sv8CZp0v6LQ2v1/m u3y/h839tX0zGJ36VtBsIY4EJaxlr78g9gokEfz6HA7wvXb7ECo8nRjXjO0+Ty/E5IC64BseItDk',
     'path' : '/'}
    

    我不确定你是否可以得到HttpOnly,因为文档中没有提到它。

    【讨论】:

      【解决方案2】:

      我使用类似的代码遇到了同样的错误

      pickle.dump(driver.get_cookies(), open(cookie_file, "wb"))
      cookies = pickle.load(open(cookie_file, "rb"))
      driver.add_cookie(cookies)
      

      我没有密切注意我在哪里有一个 cookie 与许多 cookies

      for c in cookies:
          driver.add_cookie(c)
      

      解决了这个问题。 HttpOnly 是这里的红鲱鱼。 add_cookie 用那个和许多其他键就可以了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多