如何在Robot Framework(RequestsLibrary)中传递Cookie至GET请求
错误原因
报错${cookie} is Unknown in this session的核心问题是:你代码里用到的${cookie}变量没有被提前定义或从之前的POST请求响应中提取出来,当前会话上下文找不到这个变量;同时你调用Create Session的参数用法也存在错误。
解决方案
方案1:利用会话自动维护Cookie(推荐)
Robot Framework的RequestsLibrary会话会自动保存请求的Cookie,后续用同一个会话发送请求时会自动带上,无需手动传递:
# 1. 创建会话 Create Session mySession ${api_auth} # 2. 发送POST请求,会话自动保存Cookie ${post_response}= POST On Session mySession ${auth_endpoint} ${payload} Log To Console POST响应状态码:${post_response.status_code} # 3. 直接用同一个会话发送GET请求,Cookie自动携带 ${response}= GET On Session mySession ${api_profile} Log To Console ${response.status_code}
方案2:手动提取并传递Cookie
如果必须手动处理Cookie,需要先从POST响应中提取,再正确传入会话:
# 1. 发送POST请求获取响应 ${post_response}= POST Request ${api_auth} ${payload} # 2. 从响应中提取Cookie(根据实际响应格式调整) # 方式A:获取响应的完整cookies对象 ${cookie}= Set Variable ${post_response.cookies} # 方式B:提取特定Cookie,比如名为session_id的Cookie ${session_cookie}= Get From Dictionary ${post_response.cookies} session_id ${cookie_dict}= Create Dictionary session_id=${session_cookie} # 3. 创建会话时传入Cookie(注意参数名是cookies) Create Session mySession ${api_auth} cookies=${cookie} # 或者传入构造好的特定Cookie字典 # Create Session mySession ${api_auth} cookies=${cookie_dict} # 4. 发送GET请求 ${response}= GET On Session mySession ${api_profile} Log To Console ${response.status_code}
你的代码修正点
- 补充POST请求步骤,从响应中提取
${cookie}变量,确保它在Create Session执行前被定义。 - 调用
Create Session时,手动传Cookie需要指定参数名cookies=,比如Create Session mySession ${api_auth} cookies=${cookie},而非直接把${cookie}放在第三个参数位置。
内容的提问来源于stack exchange,提问作者marysh
相关产品推荐
相关产品推荐

