python接口自动化(十六)--参数关联接口后传(详解)

简介

  大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础。因此再在沙场实例演练一下博客园的相关接口。我们用自动化发随笔之后,要想接着对这篇随笔操作,不用说就需

要用参数关联了,发随笔之后会有一个随笔的 id,获取到这个 id,继续操作传这个随笔 id 就可以了(博客园的登录机制已经变了,不能用账号和密码登录了,这里用 cookie 登录)

大致流程步骤:web界面操作登录抓包查看cookie—>代码模拟cookie登录—>web界面操作新建随笔和保存随笔—>抓包查看新建随笔和保存随笔的url和参数等—>代码模拟新建随笔并保存编辑内容—>web界面操作删除随笔—>抓取删除操作请求—>提取参数—>传参—>代码实现。

一、删除随笔

1、我们前面讲过登录后新建随笔和保存随笔后,不记得可以点击传送门那可以继续接着操作:删除刚才新建的随笔

2、用fiddler抓包,抓到删除新建随笔的请求,从抓包结果可以看出,传的json参数是postId

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

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

二、提取参数

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

2、通过正则表达式从保存的url提取需要的字符串,这个参数值前面(postid=)和后面(&)字符串都是固定的

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

三、传参

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

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

3、接着前面的保存随笔的操作,就可以删除成功了

注意:同理和jenkins一样,如果想看清楚,可以在删除新建随笔出打断点,看到新建的随笔后,再次执行下边的代码 看看是不是可以删掉新建随笔

四、参考代码

 1 # coding:utf-8
 2 import requests
 3 # 先打开登录首页,获取部分cookie
 4 url = "https://passport.cnblogs.com/user/signin"
 5 headers = {
 6             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
 7            }  # get方法其它加个ser-Agent就可以了
 8 s = requests.session()
 9 r = s.get(url, headers=headers,verify=False)
10 print (s.cookies)
11 # 添加登录需要的两个cookie
12 c = requests.cookies.RequestsCookieJar()
13 c.set(‘.CNBlogsCookie‘, ‘XXX‘)  # 填上面抓包内容
14 c.set(‘.Cnblogs.AspNetCore.Cookies‘,‘XXX‘)  # 填上面抓包内容
15 c.set(‘AlwaysCreateItemsAsActive‘,"True")
16 c.set(‘AdminCookieAlwaysExpandAdvanced‘,"True")
17 s.cookies.update(c)
18 print (s.cookies)
19 # 登录成功后保存编辑内容
20 url2= "https://i.cnblogs.com/EditPosts.aspx?opt=1"
21 body = {"__VIEWSTATE": "",
22         "__VIEWSTATEGENERATOR":"FE27D343",
23         "Editor$Edit$txbTitle":"这是绕过登录的标题:北京-宏哥",
24         "Editor$Edit$EditorBody":"<p>这里是中文内容:http://www.cnblogs.com/duhong/</p>",
25         "Editor$Edit$Advanced$ckbPublished":"on",
26         "Editor$Edit$Advanced$chkDisplayHomePage":"on",
27         "Editor$Edit$Advanced$chkComments":"on",
28         "Editor$Edit$Advanced$chkMainSyndication":"on",
29         "Editor$Edit$lkbDraft":"存为草稿",
30          }
31 r2 = s.post(url2, data=body, verify=False)
32 #print (r.content.decode(‘utf-8‘))
33
34 # 第三步:正则提取需要的参数值
35 import re
36 postid = re.findall(r"postid=(.+?)&", r2.url)
37 print(type(postid))
38 print (postid) # 这里是 list
39 # 提取为字符串
40 print (postid[0])
41 # 第四步:删除草稿箱
42 url3 = "https://i.cnblogs.com/post/delete"
43 json3 = {"postId": postid[0]}
44 r3 = s.post(url3, json=json3, verify=False)
45 print (r3.json())

五、小结

1、好了,参数关联接口就是这么简单,相信各位小伙伴下回遇到此种类似的问题,不会慌了,应该是十拿九稳的把它KO掉。

2、有兴趣的自己可以向上一篇一样,自己练习一下打断点,自己可以体验一下其中的乐趣和神奇。

最后欢迎各位小伙伴探讨和留言!!!

原文地址:https://www.cnblogs.com/du-hong/p/10715555.html

时间: 2024-07-29 16:50:08

python接口自动化(十六)--参数关联接口后传(详解)的相关文章

“全栈2019”Java第九十六章:抽象局部内部类详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十六章:抽象局部内部类详解 下一章 "全栈2019"Java第九十七章:在方法中访问局部内部类成员详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学

RIDE 接口自动化请求体参数中文时报错:“UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xd7 in position 9......”

在进行robotframework  接口自动化,在请求体参数中输入中文会报以下错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 9: ordinal not in range(128)..... 改mimetypes.py文件,路径位于python的安装路径下的Lib\mimetypes.py文件.在import下添加如下几行:解放参考如下: if sys.getdefaultencoding() 

Python进阶(三十六)-Web框架Django项目搭建全过程

Python进阶(三十六)-Web框架Django项目搭建全过程 ??IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 ??Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句. 自带的强大的后台功能 几行简单的代码就让你的网

第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解

第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲-scrapy信号详解 信号一般使用信号分发器dispatcher.connect(),来设置信号,和信号触发函数,当捕获到信号时执行一个函数 dispatcher.connect()信号分发器,第一个参数信号触发函数,第二个参数是触发信号, signals.engine_started当Scrapy引擎启动爬取时发送该信号.该信号支持返回deferreds.signals.engine_stopped当Scrapy引擎停止时发送

[转]C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

本文转自:http://www.cnblogs.com/landeanfen/p/5501487.html 阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T content) 2.Ok(). Ok(T content) 3.NotFound() 4.其他 5.自定义IHttpActionResult接口的实现 三.HttpResponseMessage 四.自定义类型 五.总结 正文 前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学

Android基础之十四数据存储 之 SQLite数据库详解

Android基础之十四数据存储 之 SQLite数据库详解 SQLite 是一款 轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百 K 的内存就足够了,因而特别适合在移动设备上使用. SQLite 不仅支持标准的 SQL 语法,还遵循了数据库的 ACID( 原子性(Atomicity) .一致性(Consistency) . 隔离性(Isolation) . 持久性(Durability))事务,所以只要你以前使用过其他的关系型数据库,就可以很快地上手 SQLite.而

4.0【OSPF】NP十二班第六天OSPF其它LSA详解&域间汇总及过滤-2

OSPF其它LSA详解&域间汇总及过滤 域间汇总 在OSPF里面有两种角色可以做汇总: 1.ABR:可以生成3类,针对3类域间路由做汇总 2.ASBR:生成5类,可以对外部路由做汇总 [实验配置]2:20 在R1上创建lo0口宣告进OSPF,ABR会针对这条链路信息通告一个3类LSA 在R1上看这条链路是否被宣告进OSPF: show  ip ospf database router self-originate 逻辑接口/物理接口但没有邻居关系,会被通告成stub network 末节网络 在

python接口自动化6-参数化关联

前言 接口中我们经常需要用到参数关联,比如,登录token,需要传给后面的参数使用,又比如要查看某个商品需要将商品的id传入下一个接口使用. 等等,所以我们必要学会 re 正则获取,或者返回json获取,个人认为 re 挺实用的. 一.禅道-操作关闭需求为实例 1.手工操作抓包,可以看到下图一个 uid 每次操作关闭需求都会不一样,即为动态参数.那我们怎样知道这个 uid 在哪里获取呢? 2.查看上一个接口中,不难发现其 uid 就在上一个接口中. 3.既然知道了 uid 在上一个接口中,那么我

2019虫师自动化 Python接口自动化虫师 robotframework虫师 虫师接口自动化源码下载

第一套:Python虫师自动化 [5.1G]┃ ┣━━Python接口测试 [2.7G]┃ ┃ ┣━━code [23.9K]┃ ┃ ┃ ┗━━myweb01.zip [23.9K]┃ ┃ ┣━━Python Web 接口开发与测试7_28.pdf [6.1M]┃ ┃ ┣━━02.(第二节)python_install.mp4 [82M]┃ ┃ ┣━━03.(第三节)python_calss_and_mudule.mp4 [126.9M]┃ ┃ ┣━━04.(第四节)python_excepti