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

要用参数关联了,发随笔之后会有一个随笔的 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一样,如果想看清楚,可以在删除新建随笔出打断点,看到新建的随笔后,再次执行下边的代码 看看是不是可以删掉新建随笔


四、参考代码

#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©
18 print (s.cookies)
19 # 登录成功后保存编辑内容
20 url2= “https://i.cnblogs.com/EditPosts.aspx?opt=1”
21 body = {"__VIEWSTATE": “”,
22 “__VIEWSTATEGENERATOR”:“FE27D343”,
23 “EditorEditEditEdittxbTitle”:“这是绕过登录的标题:北京-宏哥”,
24 “EditorEditEditEditEditorBody”:“

这里是中文内容:http://www.cnblogs.com/duhong/

”,
25 “Editor EditEditEditAdvanced ckbPublished":"on",26"EditorckbPublished":"on", 26 "EditorckbPublished":"on",26"EditorEdit AdvancedAdvancedAdvancedchkDisplayHomePage”:“on”,
27 “Editor EditEditEditAdvanced chkComments":"on",28"EditorchkComments":"on", 28 "EditorchkComments":"on",28"EditorEdit AdvancedAdvancedAdvancedchkMainSyndication”:“on”,
29 “Editor EditEditEditlkbDraft”:“存为草稿”,
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、有兴趣的自己可以向上一篇一样,自己练习一下打断点,自己可以体验一下其中的乐趣和神奇。

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

  1. python接口自动化(四)--接口测试工具介绍(详解)

    简介 "工欲善其事必先利其器",通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进 ...

  2. soapui工具_python接口自动化(四)--接口测试工具介绍(详解)

    简介 "工欲善其事必先利其器",通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进 ...

  3. 带你自学Python系列(十):用户输入input函数详解

    ↑ 点击上方[计算机视觉联盟]关注我们 今天是小编持续更新关于Python的知识总结以及Python实践项目应用的第10天,带你利用零碎时间自学最受欢迎的编程语言之一Python语言.你和小编一起打卡 ...

  4. python接口自动化(二十一)--unittest简介(详解)

    简介 前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest.熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 T ...

  5. Linux内存管理(四十六):内核OOM机制详解

    源码基于:Linux5.4 0. 前言 在 buddy系统慢速分配 一文中,我们分析了从快速分配流程无法分配到内存之后,会进入慢速分配流程.通过多种方式尝试内存分配: 通过降低水位等方式修改 allo ...

  6. Python的学习(十六):对文件的操作

    Python的学习(十六):对文件的操作 编码格式的介绍 Python中的解释器使用的是Unicode(内存) .py文件在磁盘上使用UTF-8存储(外存) 如何修改文件格式?不写的话默认为UTF-8 ...

  7. (转)C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    原文链接:https://www.cnblogs.com/landeanfen/p/5501487.html 阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T ...

  8. python 命令-python解析命令行参数的三种方法详解

    这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法: ...

  9. python训练模型函数参数_keras读取训练好的模型参数并把参数赋值给其它模型详解...

    介绍 本博文中的代码,实现的是加载训练好的模型model_halcon_resenet.h5,并把该模型的参数赋值给两个不同的新的model. 函数式模型 官网上给出的调用一个训练好模型,并输出任意层 ...

最新文章

  1. “诺奖风向标”2021拉斯克奖公布:授予mRNA疫苗、光遗传学以及戴维·巴尔的摩...
  2. C言语选择排序算法及代码
  3. va_start和va_end使用详解
  4. 9.12測试(四)——測试笔
  5. Hadoop系列一:Hadoop集群分布式部署
  6. Poj - 3254 Corn Fields (状压DP)(入门)
  7. hadoop知识整理(2)之MapReduce
  8. CF585E-Present for Vitalik the Philatelist【莫比乌斯反演,狄利克雷前缀和】
  9. html 显图片宽度100,HTML – 如何显示内联几个 100%宽度?
  10. AgentWeb简易使用
  11. VirtualBox成功安装Ubuntu18.04设置共享文件夹总结
  12. linux内存扩展,linux 扩展内存
  13. 国内顶尖网页游戏制作人和主策划名单
  14. XP下免U盘安装Ubuntu 18.04(持续更新遇到的问题,20200422更新)
  15. 苹果开发的资源URL链接
  16. 堂食扫码点餐的小程序设计开发
  17. app爬虫抓包不能抓到对应的http网络请求解决办法,以某团app为例
  18. 安卓 类微信界面实现
  19. 7-2 高精度求累加和 分数 25作者 胡伟平单位 广西科技大学
  20. iphone进入安全模式及退出安全模式的方法

热门文章

  1. ehcache版本冲突
  2. 基于jdk proxy的动态代理模式
  3. textarea在IE中和FF下不同的效果
  4. .net random伪随机数
  5. mysql单实例安装
  6. Eclipse+MyEclipse+Tomcat下配置建立Web Project
  7. Oracle SQL存储过程结构、异常处理示例
  8. Asp.Net完美隐藏服务器信息
  9. 关于IIS8.5在配置完后出现503问题解决方案
  10. 【报告分享】2020年淘宝直播新经济报告.pdf(附下载链接)