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())

 注意:

    每一次草稿保存成功之后,需要更改草稿的标题才能成功进行下一次操作,否则会报错

posted @ 2018-06-11 15:28  满满爱喝老酸奶  阅读(966)  评论(0编辑  收藏  举报