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}
It always returns TypeError: string indices must be integers
.
Traceback:
Traceback (most recent call last):
File "c:\python27\lib\site-packages\RequestsLibrary\RequestsKeywords.py", line 370, in get_request
session, uri, params, headers, json, redir, timeout)
File "c:\python27\lib\site-packages\RequestsLibrary\RequestsKeywords.py", line 897, in _get_request
verify=self.verify)
File "c:\python27\lib\site-packages\requests\sessions.py", line 501, in get
return self.request('GET', url, **kwargs)
File "c:\python27\lib\site-packages\requests\sessions.py", line 474, in request
prep = self.prepare_request(req)
File "c:\python27\lib\site-packages\requests\sessions.py", line 385, in prepare_request
cookies = cookiejar_from_dict(cookies)
File "c:\python27\lib\site-packages\requests\cookies.py", line 518, in cookiejar_from_dict
cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
And I really need to pass the cookie to the request, because otherwise it returns back only login page again.
Many thanks for any help!
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
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}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With