zoukankan      html  css  js  c++  java
  • 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())
    

     注意:

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

  • 相关阅读:
    用html自己开发自己的串口TCP通讯调试软件
    推荐模型PNN: 原理介绍与TensorFlow2.0实现
    推荐模型NeuralCF:原理介绍与TensorFlow2.0实现
    推荐模型DeepCrossing: 原理介绍与TensorFlow2.0实现
    推荐模型AutoRec:原理介绍与TensorFlow2.0实现
    ffmpeg命令的简单使用
    X264的交叉编译
    FDK_AAC交叉编译
    编译lame静态库
    iOS安全清单
  • 原文地址:https://www.cnblogs.com/manaizhuang/p/9167270.html
Copyright © 2011-2022 走看看