当前位置:脚本大全 > > 正文

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

时间:2021-10-16 00:25:45类别:脚本大全

python接口自动化接口依赖

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

简介

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

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

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

一、删除随笔

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

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

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

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

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

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

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

二、提取参数

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

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

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

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

三、传参

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

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

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

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

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

四、参考代码

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • # 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', 'xxx') # 填上面抓包内容
  • c.set('.cnblogs.aspnetcore.cookies','xxx') # 填上面抓包内容
  • c.set('alwayscreateitemsasactive',"true")
  • c.set('admincookiealwaysexpandadvanced',"true")
  • s.cookies.update(c)
  • print (s.cookies)
  • # 登录成功后保存编辑内容
  • url2= "https://i.cnblogs.com/editposts.aspx?opt=1"
  • body = {"__viewstate": "",
  •     "__viewstategenerator":"fe27d343",
  •     "editor$edit$txbtitle":"这是绕过登录的标题:北京-宏哥",
  •     "editor$edit$editorbody":"<p>这里是中文内容:http://www.cnblogs.com/duhong/</p>",
  •     "editor$edit$advanced$ckbpublished":"on",
  •     "editor$edit$advanced$chkdisplayhomepage":"on",
  •     "editor$edit$advanced$chkcomments":"on",
  •     "editor$edit$advanced$chkmainsyndication":"on",
  •     "editor$edit$lkbdraft":"存为草稿",
  •      }
  • r2 = s.post(url2, data=body, verify=false)
  • #print (r.content.decode('utf-8'))
  •  
  • # 第三步:正则提取需要的参数值
  • import re
  • postid = re.findall(r"postid=(.+?)&", r2.url)
  • print(type(postid))
  • 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())
  • 五、小结

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

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

    以上所述是小编给大家介绍的python接口自动化参数关联接口详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!

    原文链接:https://www.cnblogs.com/du-hong/p/10715555.html

    上一篇下一篇

    猜您喜欢

    热门推荐