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
requests接口自动化9-共享session和传递cookie的更多相关文章
- python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- python+requests接口自动化完整项目设计源码
前言 有很多小伙伴吵着要完整的项目源码,完整的项目属于公司内部的代码,这个是没法分享的,违反职业道德了,就算别人分享了,也只适用于本公司内部的业务. 所以用例的代码还是得自己去一个个写,我只能分享项目 ...
- python+requests接口自动化完整项目设计源码(一)
原文地址https://www.cnblogs.com/yoyoketang/tag/python接口自动化/ 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址 ...
- python接口自动化4-绕过验证码登录(cookie)
前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...
- python接口自动化4-绕过验证码登录(cookie) (转载)
前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...
- python接口自动化4-绕过验证码登录(cookie)【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E ...
- session和cookie区别,多台WEB服务器如何共享session,禁用COOKIE后SESSION是否可用,为什么?
答:session的运行机制: 用户A访问站点Y,如果站点Y指定了session_start();(以下假设session_start()总是存在)那么会产生一个session_id,这个sessio ...
- requests接口自动化4-登录后才能访问的get请求,需共享cookie
登录后才能访问的get请求,需共享cookie fiddler里请求响应结果: 代码: import requests import json #form表单形式的post请求,用data传参,Con ...
- requests接口自动化8-传递数据为xml形式的post请求:data
传递数据为xml形式的post请求 请求体内容: <?xml version=“1.0” encoding = “UTF-8”?> <COM> <REQ name=&qu ...
随机推荐
- win10系统下office 2019激活
1.新建一个文本文件,创建批处理文件office.bat @echo off (cd /d "%~dp0")&&(NET FILE||(powershell sta ...
- 如何在centos7安装dnf软件包
想在自己的笔记本CentOS7上安装dnf玩玩儿,但是根据百度出来的方法没有成功. yum install epel-release -y yum install dnf 现在将解决办法转载过来,如下 ...
- RabbitMQ系列之【设置RabbitMQ远程ip登录】
由于账号guest具有所有的操作权限,并且又是默认账号,出于安全因素的考虑,guest用户只能通过localhost登陆使用,并建议修改guest用户的密码以及新建其他账号管理使用rabbitmq. ...
- Ubuntu18.04 安装QQ、Tim、微信与win无差异
一.安装deepin-wine环境: 桌面下打开终端,依次输入以下命令 git clone https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu.git ...
- PyQt5常用控件及方法(代码段)
文章目录PyQt5程序基本格式QMainWindow主窗口QLabel标签QTextBrowser文本浏览器QTextEdit文本编辑器QPushButton按键QCheckBox复选框QRadioB ...
- Spark GraphX企业运用
========== Spark GraphX 概述 ==========1.Spark GraphX是什么? (1)Spark GraphX 是 Spark 的一个模块,主要用于进行以图为核心的计 ...
- Web测试和app测试区别?
EB测试和APP测试从流程上来说,没有区别.都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动.从技术上来说,WEB测试和APP测试其测试类型也基本相似,都需要进行功能测试,性能 ...
- cb21a_c++_string对象的比较
*cb21a_c++_string对象的比较s.compare(s2)--区分大小的s.compare(pos1,n1,s2)s.compare(pos1,n1,s2,pos2,n2)s.compar ...
- nginx在windows系统中启动、重启、停止,常用命令
cmd终端在进入到nginx的安装目录下使用对应命令 查看nginx的版本号:nginx -v 启动nginx:start nginx 快速停止或关闭nginx:nginx -s stop 正常停止或 ...
- mysql事务的坑----MyISAM表类型不支持事务操作
最近需要通过JDBC对数据库做事务型操作,实践时发现,并没有达到想要的效果,表现在:1.每次执行executeUpdate()后,数据就马上能在DB中查到.但按理来说,我还没执行commit(),DB ...