1. 程式人生 > 實用技巧 >requests介面自動化9-共享session和傳遞cookie

requests介面自動化9-共享session和傳遞cookie

前言:

session:用requests.session()建立會話,可以將會話資訊傳遞給其他介面

cookie:用RequestsCookieJar或者cookie字典傳遞cookie資訊

fildder請求響應內容:

程式碼:

import  requests
from requests.cookies import RequestsCookieJar
#登入
#form表單形式的post請求,用data傳參,Content-Type: application/x-www-form-urlencoded
payload={"username":"admin","password":"admin","validateCode":"","rememberMe":"false"}
s=requests.session()
response1=s.post("http://www.luckyframe.cn/login",data=payload)
jsseionid=response1.cookies['JSESSIONID']
#列印的是cookiejar物件
print(response1.cookies)
#列印的是具體cookie值
print(response1.cookies['JSESSIONID']) #1、不傳cookie,直接傳送其他請求
response2=requests.get('http://www.luckyframe.cn/testexecution/taskCaseExecute/getMainData.do?_=1592060167330')
#列印響應文字
print(response2.text) #2、登入後,s裡繼承了cookie資訊,用s可以直接傳送其他請求
response3=s.get('http://www.luckyframe.cn/testexecution/taskCaseExecute/getMainData.do?_=1592060167330')
#列印響應文字
print(response3.text) #3、用cookie傳遞登入會話資訊
cookie={'JSESSIONID':jsseionid}
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}
response5=requests.get('http://www.luckyframe.cn/testexecution/taskCaseExecute/getMainData.do?_=1592060167330',cookies=cookie,headers=header)
#列印響應文字
print(response5.text) #4、用RequestsCookieJar傳遞登入cookie資訊
response6=requests.get('http://www.luckyframe.cn/testexecution/taskCaseExecute/getMainData.do?_=1592060167330',cookies=response1.cookies,headers=header)
#列印響應文字
print(response6.text) #5、用cookie傳遞登入會話資訊
#建立RequestsCookieJar物件
jar=RequestsCookieJar()
#通過set方法新增cookie資訊
jar.set('JSESSIONID',jsseionid) header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}
response7=requests.get('http://www.luckyframe.cn/testexecution/taskCaseExecute/getMainData.do?_=1592060167330',cookies=jar,headers=header)
#列印響應文字
print(response7.text) #6、用cookie傳送post請求
header1={'Content-Type':'application/x-www-form-urlencoded'}
response8=requests.post('http://www.luckyframe.cn/testmanagmt/projectPlan/list',cookies=cookie,headers=header1)
print(response8.text)

 執行結果:

D:\Python37\python.exe E:/PycharmProjects/home_UI/apistudy/testcookie.py
<RequestsCookieJar[<Cookie JSESSIONID=3c734cf5-bee0-4c75-87d0-a6bc85f77ed6 for www.luckyframe.cn/>]>
3c734cf5-bee0-4c75-87d0-a6bc85f77ed6
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> <title>LuckyFrame開源測試平臺</title>
<meta name="keywords" content="開源測試工具,自動化測試平臺,開源測試平臺,自動化測試框架,luckyframe">
<meta name="description" content="LuckyFrame測試平臺是一款開源的測試平臺,最大的特點是全緯度覆蓋了介面自動化、WEB UI自動化、APP自動化,並且支援分散式測試,測試全關鍵字驅動">
<link href="css/bootstrap.min.css" rel="stylesheet"/>
<link href="css/font-awesome.min.css" rel="stylesheet"/>
<link href="css/style.css" rel="stylesheet"/>
<link href="css/login.min.css" rel="stylesheet"/>
<link href="/ruoyi/css/ry-ui.css?v=3.2.0" rel="stylesheet"/>
<!--[if lt IE 9]>
<meta http-equiv="refresh" content="0;ie.html" />
<![endif]-->
<link rel="shortcut icon" href="favicon.ico"/>
<style type="text/css">label.error { position:inherit; }</style>
<script>
if(window.top!==window.self){window.top.location=window.location};
</script>
</head> <body class="signin"> <div class="signinpanel">
<div class="row" style="position:relative;">
<div class="logopanel m-b" style="text-align:center">
<h1><img alt="[ LuckyFrame ]" src="/indexlogo.png"></h1>
</div>
<div class="col-sm-5" style="position:absolute;margin:auto;left:0;right:0;">
<form id="signupForm">
<h4 class="no-margins">登入:</h4>
<input type="text" name="username" class="form-control uname" placeholder="使用者名稱" />
<input type="password" name="password" class="form-control pword" placeholder="密碼" />
<div class="row m-t">
<div class="col-xs-6">
<input type="text" name="validateCode" class="form-control code" placeholder="驗證碼" maxlength="5">
</div>
<div class="col-xs-6">
<a href="javascript:void(0);" title="點選更換驗證碼">
<img src="captcha/captchaImage?type=math" class="imgcode" width="85%"/>
</a>
</div>
</div>
<div class="checkbox-custom">
<input type="checkbox" id="rememberme" name="rememberme"> <label for="rememberme">記住我</label>
</div>
<button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在驗證登入,請稍後...">登入</button>
</form>
</div>
</div>
<div class="signup-footer">
<div class="pull-left" style="background-color:#00BFFF;margin-top:5px">
© 2019 All Rights Reserved. LuckyFrame 3.1.1<br>
</div>
</div>
</div>
<script> var ctx = "\/"; var captchaType = "math"; </script>
<!-- 全域性js -->
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<!-- 驗證外掛 -->
<script src="/ajax/libs/validate/jquery.validate.min.js"></script>
<script src="/ajax/libs/validate/messages_zh.min.js"></script>
<script src="/ajax/libs/layer/layer.min.js"></script>
<script src="/ajax/libs/blockUI/jquery.blockUI.js"></script>
<script src="/ruoyi/js/ry-ui.js?v=3.2.0"></script>
<script src="/ruoyi/login.js"></script>
</body>
</html> {"caseadddata":["1","1"],"casedata":["0","0"],"taskdata":["20天0小時34分鐘","1"],"logdata":["0","0"]}
{"caseadddata":["1","1"],"casedata":["0","0"],"taskdata":["20天0小時34分鐘","1"],"logdata":["0","0"]}
{"caseadddata":["1","1"],"casedata":["0","0"],"taskdata":["20天0小時34分鐘","1"],"logdata":["0","0"]}
{"caseadddata":["1","1"],"casedata":["0","0"],"taskdata":["20天0小時34分鐘","1"],"logdata":["0","0"]}
{"total":1,"rows":[{"searchValue":null,"createBy":"admin","createTime":"2020-06-14 11:32:27","updateBy":"admin","updateTime":"2020-06-14 11:32:27","remark":null,"params":{},"planId":1,"planName":"迭代一","planCaseCount":0,"projectId":2,"project":{"searchValue":null,"createBy":null,"createTime":null,"updateBy":null,"updateTime":null,"remark":null,"params":{},"projectId":2,"projectName":"ICS","deptId":104,"projectSign":"ics","dept":null,"flag":false}}],"code":0} Process finished with exit code 0