day28-测试自动化之Requests库的发送请求、响应内容、Cookie和session

news2024/11/29 4:44:08

目录

一、发送请求

        1.1.GET请求

                1).作用

                2).步骤

                3).响应对象

                4).代码

                5).带参代码

        1.2.POST请求

                1).作用

                2).应用

                3).参数

                4).代码(地址已失效)

                5).扩展

        1.3.PUT请求

                1).作用

                2).应用

                3).参数

                4).响应

                5).代码(地址已失效)

        1.4.DELETE请求

                1).作用

                2).应用

                3).响应

                4).代码

二、响应内容

        2.1.方法

        2.2.代码

三、Cookie和Session

        3.1.Cookie

        3.2.Session

                1).介绍

                2).创建session对象

                3).获取及应用

                4).代码

四、今日学习思维导图

一、发送请求

        1.1.GET请求

                1).作用

                        获取资源 (查询)

                2).步骤

                        2.1).导包import request

                        2.2).调用get方法request.get()

                3).响应对象

                        3.1).获取URL:response.url

                        3.2).获取响应状态码:response.status_code

                        3.3).获取响应信息:response.text

                4).代码

import requests

response = requests.get('https://www.google.com')

# 获取请求url
print(response.url)
# 获取响应状态码
print(response.status_code)
# 以文本形式显示响应内容
print(response.text)

                5).带参代码

# 导包
import requests

# 带参调用
# 不推荐静态写死
# 参数:params:字典或字符串(推荐字典)

# 定义字典
# params = {"id":1001}

# 定义字典
# params = {"id": "1001,1002"} # %2C 为ASCI值的逗号

# 定义字典
params = {"id": 1001, "kw": "广州"}

response = requests.get('https://www.google.com', params)

# 获取请求url
print(response.url)
# 获取响应状态码
print(response.status_code)
# 以文本形式显示响应内容
print(response.text)

        1.2.POST请求

                1).作用

                        新增资源

                2).应用

                        2.1).导包 import requests

                        2.2).调用post方法:requests.post()

                3).参数

                        3.1).url:新增接口的url地址

                        3.2).json:新增请求的报文

                        3.3).headers:请求信息头

                4).代码(地址已失效)

# 请求地址:http:127.0.0.1:8000/api/departments/
# 请求信息头:Content-Type: application/json

# json格式
# 导包
import requests

# 调用Post方法
# 请求url
url = 'http:127.0.0.1:8000/api/departments/'
# 请求headers
headers = {'Content-Type': 'application/json'}
# 请求json
data = {
    "data": [
        {
            "dep_id": "TT701",
            "dep_name": "Test学院",
            "slogan": "Test-Master",
            "master_nane": "Here is Slogan"
        }
    ]
}

response = requests.post(url,json=data,headers=headers)

# 获取响应对象
print(response.json())

# 获取响应状态码
print(response.status_code)

                5).扩展

                        5.1).data与json区别

                                1.data:字典对象

                                2.json:json字符串

                                3.提示:在python中字典对象和json字符串长的一样,但是后台格式是有区别的

                                4.如何将字典对象转为json字符串

                                        (1).导入json

                                        (2).json.dumps(字典对象)转换json字符串

                        5.2).响应数据json()与text区别

                                1.json()返回类型字典,可以通过键名来获取响应的值

                                2.text:返回的类型为字符串,无法通过键名来获取响应的值

                                3.提示:共同点长得都像字典

        1.3.PUT请求

                1).作用

                        更新资源

                2).应用

                        2.1).导包 import requests

                        2.2).调用put方法request.put()

                3).参数

                        参考post方法参数

                4).响应

                        4.1).response.json()

                        4.2).response.status_code

                5).代码(地址已失效)

# 请求地址:http:127.0.0.1:8000/api/departments/
# 请求信息头:Content-Type: application/json

# json格式
# 导包
import requests

# 调用Post方法
# 请求url
url = 'http:127.0.0.1:8000/api/departments/TT701/'
# 请求headers
headers = {'Content-Type': 'application/json'}
# 请求json
data = {
    "data": [
        {
            "dep_id": "TT701",
            "dep_name": "Testdep_name学院",
            "slogan": "Test-Master",
            "master_nane": "Here is Slogan"
        }
    ]
}

response = requests.put(url,json=data,headers=headers)

# 获取响应对象
print(response.json())

# 获取响应状态码
print(response.status_code)

        1.4.DELETE请求

                1).作用

                        删除资源

                2).应用

                        2.1).导包 import requests

                        2.2).调用方法delete

                3).响应

                        响应状态码:204

                4).代码

# 请求地址:http:127.0.0.1:8000/api/departments/
# 请求信息头:Content-Type: application/json

# json格式
# 导包
import requests

# 调用delete方法
# 请求url
url = 'http:127.0.0.1:8000/api/departments/TT701/'
response = requests.delete(url)

# 获取响应状态码 --204
print(response.status_code)

二、响应内容

        2.1.方法

                1).response.status_code状态码

                        1.1).作用:获取响应状态码

                        1.2).格式:响应对象.status_code

                2).response.url请求url

                        2.1).作用:获取请求url

                        2.2).格式:响应对象.url

                3).response.encoding查看响应头部字符编码

                        3.1).作用

                                1.查看默认请求编码格式--->响应对象.encoding

                                2.设置响应编码格式--->响应对象.encoding="UTF-8"

                4).response.headers头信息

                        4.1).作用:获取服务器响应信息头

                        4.2).格式:响应对象.headers

                5).response.cookiescookie信息

                        5.1).作用:获取响应cookie信息(服务器产生)

                        5.2).格式:响应对象.cookies

                6).response.text文本形式的响应内容

                        6.1).作用:以文本形式解析响应内容

                        6.2).格式:响应对象.text

                7).response.content字节形式的响应内容

                        7.1).作用:以字节码形式解析响应内容

                        7.2).格式:响应对象.content

                8).response.json() JSON形式的响应内容

                        8.1).作用:以json字符串形式解析响应内容

                        8.2).格式:响应对象.json()

        2.2.代码

# 导包
import requests

# url
url = 'http://www.baidu.com'

# 调用get方法
response = requests.get(url)

# 查看状态码
print(response.status_code)

# 查看url
print(response.url)

# 查看响应头部字符编码  ISO-8859-1
print(response.encoding)

# 查看头信息 headers信息比较重要(token/session都存储在信息头中)
print(response.headers)

# 查看cookie信息
print(response.cookies)

# 查看文本形式的响应内容
print(response.text)

# 查看字节形式的响应内容
print(response.content)

# 查看json形式的响应内容
print(response.json())

三、Cookie和Session

        3.1.Cookie

                1).来源:由服务器生成

                2).作用:区分同一请求客户端

                3).获取:响应对象.cookies

                4).设置

                        4.1).设置:cookies={"获取出来的cookies键名":"获取出的值"}

                        4.2).应用:request.请求方法(url,cookies=cookies)

                5).代码

# 导包
import requests

# 调用post
url_login = "https://demo6.tp-shop.cn/home/User/login.html"

url_code = "https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
r = requests.get(url_login)

r_cookie = r.cookies
# print("获取的cookie为",r_cookie)
# print(r.content)
# with open("./code.jpg","wb") as f:
#     f.write(r.content)
#     code = input('请输入验证码:')

# 设置cookie变量,单独获取cookie值
cookie = {"PHPSESSID": r_cookie["PHPSESSID"]}

# 添加cookie信息
data = {
    "username": "1967535686@qq.com",
    "password": "20021017",
    "verify_code": "8888"
}
response = requests.post(url_login, data=data, cookies=cookie)
# 验证是否登录
# print(response.json())
print(response.status_code)

# 查询订单
url_order = "https://demo6.tp-shop.cn/Home/Order/order_list.html"
response_order = requests.get(url_order,cookie)
print(response_order.status_code)

        3.2.Session

                1).介绍

                        1.1).在requests里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。

                        1.2).会话能让我们在跨请求时候保持某些参数,比如在同一个session实例发出的所有请求之间保持cookie。

                2).创建session对象

                        session = requests.Session()

                3).获取及应用

                        3.1).获取

                                1.导包import requests

                                2.获取session对象session=requests.session()

                        3.2).应用

                                1.通过session对象.方法

                                2.提示:无论通过session对象调用哪个方法,返回结果都是response对象

                4).代码

# url_login = "https://demo6.tp-shop.cn/home/User/login.html"
# url_code = "https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
# data = {
#     "username": "1967535686@qq.com",
#     "password": "20021017",
#     "verify_code": "8888"
# }
# url_order = "https://demo6.tp-shop.cn/Home/Order/order_list.html"

# 导包
import requests

# 获取session对象
session = requests.Session()

# 请求验证码让session对象记录cookies信息
url_code = "https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
session.get(url_code)
print(session.cookies)

# 请求登录
url_login = "https://demo6.tp-shop.cn/home/User/login.html"
data = {
    "username": "19675356861",
    "password": "20021017",
    "verify_code": 8888
}
re = session.post(url_login, data)
print(re.status_code)
# 查询订单
url_order = "https://demo6.tp-shop.cn/Home/Order/order_list.html"
re2 = session.get(url_order)
print(re2.status_code)

四、今日学习思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2062234.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DC-2综合渗透,rbash逃逸,git提权,wordpress靶场渗透教程

前言 博客主页:【h0ck1r丶羽】的公众号~~ ​ 本文主要讲解了渗透测试中的完整渗透测试流程,主要介绍了【wpscan】、【cewl】、【rbash逃逸】的使用技巧,靶场为vulnhub的机器大家可以自行下载,如果文章哪有不对,还请师…

大模型在应用开发安全左移实践

1.应用开发安全左移势在必行 近年来,应用系统被入侵或敏感信息泄漏类的安全事件时有发生,大部分安全事件的根本原因是应用软件设计或实现中存在安全漏洞。由于软件安全性问题导致各种信息泄密、信息被篡改、网络服务中断的事件频发,给企业和…

如何基于 langchain与 LLM 构建自己的知识库系统

如何基于 langchain与 LLM 构建自己的知识库系统 前些时候字节上了自己的扣子,用来构建我们自己的 agent AI 实战:手把手教你使用「扣子/coze」来搭建个人blog知识库 - 掘金 (juejin.cn)[1] 受到启发,想在本地或者自己的服务器上面搭建一个知…

机器学习第五十二周周报 Distribution Shift of GNN

文章目录 week52 Distribution Shift of GNN摘要Abstract一、文献阅读1. 题目2. Abstract3. 预测标准3.1 问题提出3.2 图结构3.3 分布转移 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程 5. 结论 二、若依框架1. 框架概述2. 核心功能 3. 技术栈4. 框架特点优缺点小结参考…

写作小白2024年逆袭,AI写作工具top4的正确打开方式

以前,人们总觉得写文章、编故事是人特有的本事,机器肯定搞不定。但现在,AI越来越牛,这些AI写作工具,用上了深度学习、自然语言处理这些高科技,能模仿人的思路来写东西。它们不仅能帮人写,有时候…

AI大模型日报#0822:OpenAI推GPT-4o微调服务、混元大模型负责人专访

导读:AI大模型日报,爬虫LLM自动生成,一文览尽每日AI大模型要点资讯!目前采用“文心一言”(ERNIE-4.0-8K-latest)、“智谱AI”(glm-4-0520)生成了今日要点以及每条资讯的摘要。欢迎阅…

APO 集成生态exporter一键完成指标采集

Metrics 作为可观测性领域的三大支柱之一,Metrics数据采集显得尤为重要。传统的prometheus工具采集指标,需要指定路径抓取,当指标越来越多配置会显得复杂。同时prometheus只能采集指定的指标,当用户需要节点系统相关、中间件等指标…

虚幻5|制作一个木桩,含血量及伤害数字

一,基础设置 1.创建Actor蓝图类 2.编辑胶囊体和网格体的碰撞预设 3.打开敌人的角色蓝图,编辑飙血特效 二,创建敌人血量的ui,命名为敌人血量,如下 1. 2,打开后,添加一个画布画板和进度条&#…

为什么有了session和cookie还要使用JWT

session和cookie 为什么要使用session和cookie,他的流程是怎么样的 因为浏览器是无状态的,相当于每一次访问都是一次全新的访问,我们一般是登录来进行校验获取他的全部信息,所以会出现这个情况 这样当然也可以使用,但是很繁琐,并且影响性能,所以出现了session和cookie,他会生…

MDN边看边记

css css应用于文档的三种方法:使用外部样式表、使用内部样式表和使用内联样式。 css的层叠(cascade)和优先级(specificity): 层叠: 在css中,顺序很重要,当应用两条同级…

苹果手机怎么连接蓝牙耳机?3个方案,3秒连接

在快节奏的现代生活中,无线蓝牙耳机因其便捷性和自由度成为了许多人的首选。那么,苹果手机怎么连接蓝牙耳机呢?本文将为您介绍3种快速连接苹果设备与蓝牙耳机的方案,让您在享受音乐、通话或观看视频时,不再受线缆束缚&…

‌无人机干扰技术及其法律约束

无人机作为一种先进的航空器,‌近年来在民用、‌商用、‌军事等领域得到了广泛应用。‌然而,‌随着无人机技术的不断发展,‌其受到的潜在威胁也日益增多。‌许多外部因素可以干扰无人机的正常运行,‌甚至导致其失控或坠毁。‌本文…

linux内核驱动流程

norflash:可线性访问(和内存的访问方式相同) nandflash: 不可线性访问,必须配个专门的程序访问 Linux启动: 1. 引导程序 bootloader,为内核启动准备环境 2.启动内核(kernel) 3. 加载根文件系统(挂载) 1.bootloader启动(裸机程序)--uboot.bin --为内…

[240822] X-CMD 发布 v0.4.7: 新增 htop 、btop 和 ncdu 模块;优化 colr 和 scoop 模块

X-CMD 发布 v0.4.7 目录 X-CMD 发布 v0.4.7📃Changelog✨ htop✨ btop✨ ncdu✨ colr✨ scoop✅ 升级指南 📃Changelog ✨ htop 新增 htop 模块。本模块优先使用环境中的 htop 命令;若当前环境没有 htop 命令,模块将使用 pixi 模…

线程池的构造以及相关方法

手写线程池 package cn.itcast.n8;import lombok.extern.slf4j.Slf4j; import org.springframework.core.log.LogDelegateFactory; import java.util.ArrayDeque; import java.util.Deque; import java.util.HashSet; import java.util.concurrent.TimeUnit; import java.util…

【卡码网C++基础课 6.数组的倒序与隔位输出】

目录 题目描述与分析一、数组二、Vector三、倒序输出数组四、隔位输出五、完整代码 题目描述与分析 题目描述: 给定一个整数数组,编写一个程序实现以下功能: 1.将输入的整数数组倒序输出,每个数之间用空格分隔。 2.从正序数组中&…

可视化大屏-实现自动滚动

一、背景:可视化大屏通常需要用到自动滚动的效果,本文主要采用的是vue-seamless-scroll组件来实现(可参考官方文档) 二、实现效果: 自动滚动 三、代码实现: 解题思路: 1.先安装依赖包 npm inst…

zTree 异步加载实现 点击加载

效果图如下 每级最多显示5000条数据&#xff0c;点击加载 会再次加载5000条数据 可以监听滚动条 动态加载 我这没实现这种方式。 <!-- ztreejs --> <script src".ztree/js/jquery.ztree.core.min.js" type"text/javascript"></script>…

DLAFormer:微软提出多任务统一的端到端文本分析Transformer模型 | ICDAR 2024

论文提出新颖的基于Transformer的端到端方法DLAFormer&#xff0c;在统一的模型中集成多个文档布局分析任务&#xff0c;包括图形页面对象检测、文本区域检测、逻辑角色分类和阅读顺序预测。为了实现这一目标&#xff0c;将各种DLA子任务视为关系预测问题并提出了统一标签空间方…

kafka监控工具EFAK

kafka监控工具&#xff08;EFAK&#xff09; 1、下载2、解压3、配置3.1、安装数据库&#xff0c;需要是mysql&#xff0c;并创建ke数据库3.2、修改配置文件 4、启动4.1、启动zookeeper4.2、启动kafka4.3、启动EFAK 5、访问http://ip:8048 github地址&#xff1a;https://github…