python接口测试之参数关联遇到的问题
利用博客园登陆保存草稿以及删除草稿进行参数关联练习
1、草稿保存成功之后无法获取到保存成功的草稿id
解决方案:保存之后利用sleep函数等待几秒之后
2、程序报如下错误:
raise TypeError(repr(o) + " is not JSON serializable") TypeError: {'postId', '9167249'} is not JSON serializable
代码中post方法中必须传递的是json格式的参数
利用博客园登陆保存草稿以及删除草稿的源码如下:
# coding:utf-8 import requests import logging import re import time logging.captureWarnings(True) # 先打开登录首页,获取部分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" } #开启一个session会话 s = requests.session() r = s.get(url=url,headers=headers,verify=False) # print(s.cookies) #创建一个cookie对象 c = requests.cookies.RequestsCookieJar() #添加登陆中需要的两个cookie c.set('.CNBlogsCookie', '需要抓取的内容') # 填上面抓包内容 c.set('.Cnblogs.AspNetCore.Cookies','需要抓取的内容') # 填上面抓包内容 c.set('AlwaysCreateItemsAsActive','True') c.set('AdminCookieAlwaysExpandAdvanced',"True") #更新保存的cookie信息 s.cookies.update(c) # print(s.cookies) # result1 = r.content # result2 = r.json() # print(result2) # print(result1) # 登陆成功之后保存编辑内容 r1 = s.get('https://i.cnblogs.com/EditPosts.aspx?opt=1',headers = headers,verify=False) #保存草稿内容 print(r1.status_code) url2 = 'https://i.cnblogs.com/EditPosts.aspx?opt=1' body = { '__VIEWSTATE':'', '__VIEWSTATEGENERATOR':'FE27D343', 'Editor$Edit$txbTitle':'这是满满06', 'Editor$Edit$EditorBody':'<p>满满测试</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$txbTag':'', 'Editor$Edit$Advanced$tbEnryPassword':'', 'Editor$Edit$lkbDraft':'存为草稿' } #获取保存草稿的postid r2 = s.post(url2,data=body,verify=False) time.sleep(2) print(r2.url) postid = re.findall(r"postid=(.+?)&",r2.url) print(postid) print(postid[0]) #删除草稿 url3 = 'https://i.cnblogs.com/post/delete' json3 = {"postId":postid[0]} r3 = s.post(url3,json=json3,verify=False) time.sleep(2) print(r3.json())
注意:
每一次草稿保存成功之后,需要更改草稿的标题才能成功进行下一次操作,否则会报错