机器人框架传递 cookie 以获取请求 (RequestsLibrary) - TypeError

Robot framework pass cookie to get request (RequestsLibrary) - TypeError(机器人框架传递 cookie 以获取请求 (RequestsLibrary) - TypeError)
本文介绍了机器人框架传递 cookie 以获取请求 (RequestsLibrary) - TypeError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我需要将 cookie 值传递给 Get 请求关键字以使其工作,但它仍然失败.我不确定如何在那里正确传递它.关键字的文档说明了标头:标头:与请求一起使用的标头字典"我有这样的测试,使用库 RequestsLibrary:

I need to pass cookie value to Get request keyword to make it work, but it is still failing. I am not sure how to pass it correctly there. Documentation of the keyword says about the headers: "headers: a dictionary of headers to use with the request" I have test like this, using Library RequestsLibrary:

Check request and response
    Do Local Login  ${username}    ${password}  #this is my custom keyword - opens browser and logs in using UI
    ${cookie_value}=  Get Cookie Value  JSESSIONID
    Create Session  session1  https://oururl.com  verify=${False}  cookies=${cookie_value}
    ${dict}=  Create Dictionary   Cookie=${cookie_value}
    ${resp}=  Get request  session1  /somepage/request  headers=${dict}

它总是返回 TypeError: string indices must be integers.追溯:

        Traceback (most recent call last):
  File "c:python27libsite-packagesRequestsLibraryRequestsKeywords.py", line 370, in get_request
    session, uri, params, headers, json, redir, timeout)
  File "c:python27libsite-packagesRequestsLibraryRequestsKeywords.py", line 897, in _get_request
    verify=self.verify)
  File "c:python27libsite-packages
equestssessions.py", line 501, in get
    return self.request('GET', url, **kwargs)
  File "c:python27libsite-packages
equestssessions.py", line 474, in request
    prep = self.prepare_request(req)
  File "c:python27libsite-packages
equestssessions.py", line 385, in prepare_request
    cookies = cookiejar_from_dict(cookies)
  File "c:python27libsite-packages
equestscookies.py", line 518, in cookiejar_from_dict
    cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))

我确实需要将 cookie 传递给请求,否则它会再次返回仅登录页面.

And I really need to pass the cookie to the request, because otherwise it returns back only login page again.

非常感谢您的帮助!

推荐答案

Sooo终于找到了解决方案:

Sooo finally found the solution:

    Do Local Login  ${username}    ${password}
    ${cookie_value}=  Get Cookie Value  JSESSIONID
    ${dict}=  Create Dictionary   JSESSIONID=${cookie_value}
    Create Session  session1  https://oururl.com  verify=${False}  cookies=${dict}
    ${resp}=  Get request  session1  /somepage/request

关键字 Create Session 与 cookie 一起工作,只是 cookie 不仅必须作为 cookie 值传递,还必须作为字典 JSESSIONID=${cookie_value} 传递.或者,我不必在 Create Session 中传递 cookie,而是在 Get Request 中传递 cookie,然后我必须将 cookie 设为像 ${dict} 这样的字典=创建 Dictionary Cookie=JSESSIONID=${cookie_value} 并将其传递给 Get request session1/somepage/request headers=${dict}

Keyword Create Session works with the cookie, just the cookie must be passed not just as a cookie value, but dictionary JSESSIONID=${cookie_value}. Alternatively I don't have to pass the cookie in Create Session but in Get Request, just then I have to make the cookie as dictionary like ${dict}= Create Dictionary Cookie=JSESSIONID=${cookie_value} and this pass into Get request session1 /somepage/request headers=${dict}

这篇关于机器人框架传递 cookie 以获取请求 (RequestsLibrary) - TypeError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

build conda package from local python package(从本地 python 包构建 conda 包)
How can I see all packages that depend on a certain package with PIP?(如何使用 PIP 查看依赖于某个包的所有包?)
How to organize multiple python files into a single module without it behaving like a package?(如何将多个 python 文件组织到一个模块中而不像一个包一样?)
Check if requirements are up to date(检查要求是否是最新的)
How to upload new versions of project to PyPI with twine?(如何使用 twine 将新版本的项目上传到 PyPI?)
Why #egg=foo when pip-installing from git repo(为什么从 git repo 进行 pip 安装时 #egg=foo)