当前位置: 首页 > news >正文

python接口自动化-参数关联

前言

我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了

(博客园的登录机制已经变了,不能用账号和密码登录了,换个网站,或者用cookie登录吧)

一、删除草稿箱

1.我们前面讲过登录后保存草稿箱,那可以继续接着操作:删除刚才保存的草稿

2.用fiddler抓包,抓到删除帖子的请求,从抓包结果可以看出,传的json参数是postId

3.这个postId哪里来的呢?可以看上个请求url地址

4.也就是说保存草稿箱成功之后,重定向一个url地址,里面带有postId这个参数。那接下来我们提取出来就可以了

二、提取参数

1.我们需要的参数postId是在保存成功后url地址,这时候从url地址提出对应的参数值就行了,先获取保存成功后url

2.通过正则提取需要的字符串,这个参数值前面(postid=)和后面(&)字符串都是固定的

3.这里正则提出来的是list类型,取第一个值就可以是字符串了(注意:每次保存需要修改内容,不能重复)

三,传参

1.删除草稿箱的json参数传上面取到的参数:{"postId": postid[0]}

2.json数据类型post里面填json就行,会自动转json

3.接着前面的保存草稿箱操作,就可以删除成功了

四、参考代码

(敲黑板!!!由于博客园的登录机制变了,后面所有的登录地方全部用cookie登录)

 # coding:utf-8
import requests# 先打开登录首页,获取部分cookie
url = "https://passport.cnblogs.com/user/signin"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"}  # get方法其它加个ser-Agent就可以了s = requests.session()
r = s.get(url, headers=headers,verify=False)
print s.cookies# 添加登录需要的两个cookie
c = requests.cookies.RequestsCookieJar()c.set('.CNBlogsCookie', '这里是抓到的')  # 填上面抓包内容
c.set('.Cnblogs.AspNetCore.Cookies','这里是抓到的')  # 填上面抓包内容
c.set('AlwaysCreateItemsAsActive',"True")
c.set('AdminCookieAlwaysExpandAdvanced',"True")
s.cookies.update(c)
print s.cookies# -----------登录全部走cookie登录---# 第二步:保存草稿
url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"
body = {"__VIEWSTATE": "","__VIEWSTATEGENERATOR":"FE27D343","Editor$Edit$txbTitle":"这是3111","Editor$Edit$EditorBody":"<p>这里111:http://www.cnblogs.com/yoyoketang/</p>","Editor$Edit$Advanced$ckbPublished":"on","Editor$Edit$Advanced$chkDisplayHomePage":"on","Editor$Edit$Advanced$chkComments":"on","Editor$Edit$Advanced$chkMainSyndication":"on","Editor$Edit$Advanced$txbEntryName":"","Editor$Edit$Advanced$txbExcerpt":"","Editor$Edit$Advanced$tbEnryPassword":"","Editor$Edit$lkbDraft":"存为草稿",}r2 = s.post(url2, data=body, verify=False)
# 获取当前url地址
print r2.url# 第三步:正则提取需要的参数值
import re
postid = re.findall(r"postid=(.+?)&", r2.url)
print postid  # 这里是list
# 提取为字符串
print postid[0]# 第四步:删除草稿箱
url3 = "https://i.cnblogs.com/post/delete"
json3 = {"postId": postid[0]}
r3 = s.post(url3, json=json3, verify=False)
print r3.json()

Python接口自动化测试零基础入门到精通(2023最新版)

相关文章:

  • Ladybug 全景相机, 360°球形成像,带来全方位的视觉体验
  • [代码实战和详解]VGG16
  • vue 使用 this.$router.push 传参数,接参数的 query或params 两种方法示例
  • 第一行代码第三版-第三章变量和函数
  • CSS特效007:绘制3D文字,类似PS效果
  • css中的hover用法示例(可以在vue中制作鼠标悬停显示摸个按钮的效果)
  • 桂院校园导航 静态项目 二次开发教程 1.3
  • 差分详解(附加模板和例题)
  • 桂院校园导航 | 云上高校导航 云开发项目 二次开发教程 1.3
  • docker安装elasticsearch,elasticsearch-head
  • 使用人工智能自动测试 Flutter 应用程序
  • Linux C/C++全栈开发知识图谱(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)
  • Jenkins 构建CICD
  • 【Ubuntu】Ubuntu20.04下安装视频播放器vlc和录屏软件ssr
  • 在webstorm中配置sass编译环境
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【笔记】你不知道的JS读书笔记——Promise
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Docker: 容器互访的三种方式
  • Effective Java 笔记(一)
  • leetcode386. Lexicographical Numbers
  • Linux快速复制或删除大量小文件
  • SpingCloudBus整合RabbitMQ
  • 安装python包到指定虚拟环境
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 仿天猫超市收藏抛物线动画工具库
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 老板让我十分钟上手nx-admin
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 七牛云假注销小指南
  • 使用docker-compose进行多节点部署
  • 通信类
  • 我的面试准备过程--容器(更新中)
  • 线性表及其算法(java实现)
  • 用jQuery怎么做到前后端分离
  • 阿里云服务器购买完整流程
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • (2.2w字)前端单元测试之Jest详解篇
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (一)UDP基本编程步骤
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)大型网站的系统架构
  • . NET自动找可写目录
  • ./configure,make,make install的作用(转)
  • .gitattributes 文件
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net framework4与其client profile版本的区别
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .net下的富文本编辑器FCKeditor的配置方法