江苏建设人才网网站,做房产网站怎么样,怎么给自己做网站,建设网站的能力简介 有些 post 的请求参数是 json 格式的#xff0c;这个前面发送post 请求里面提到过#xff0c;需要导入 json模块处理。现在企业公司一般常见的接口因为json数据容易处理#xff0c;所以绝大多数返回数据也是 json 格式的#xff0c;我们在做判断时候#xff0c;往往只…
简介 有些 post 的请求参数是 json 格式的这个前面发送post 请求里面提到过需要导入 json模块处理。现在企业公司一般常见的接口因为json数据容易处理所以绝大多数返回数据也是 json 格式的我们在做判断时候往往只需要提取其中
几个关键的参数就行这时候我们就需要 json 来解析返回的数据了。首先来说一下笔者为何要单独写这么一篇原因是python 里面 bool 值是 True 和 False,json 里面 bool 值是 true和 false,并且区分大小写这就尴尬了明明都是 bool 值。
在python里面写的代码传到json里不用说肯定识别不了所以需要把python的代码经过encode后成为 json 可识别的数据类型反之json数据就需要decode后成为python代码可识别的数据类型。这个也是需要初学者注意也算是个细微差和
一个坑人的地方吧如果不注意很容易掉坑里啊。笔者就掉进去过还好自救能力强爬出来了所以为了警醒后来者就有了这篇随笔。
json 模块简介
1、Json 简介Json全名 JavaScript Object Notation,JSON(JavaScript Object Notation(记号、标记)) 是一种轻量级的数据交换格式。它基于JavaScriptStandard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立
于语言的文本格式但是也使用了类似于C语言家族的习惯包括C, C, C#, Java, JavaScript, Perl, Python等。这些特性使JSON成为理想的数据交换语言。JSON易于人阅读和编写同时也易于机器解析和生成。常用于 http 请求中接口
返回的数据中。
2、可以用 help(json),查看对应的源码注释内容 编码Encodepython-json
1、为什么要 encode笔者在开头就给各位小伙伴开门见山的说出来了让各位带着问题来探索、来学习、来思考
2、举个简单例子下图的实例中 dict 类型经过 json.dumps后变成 strTrue 变成了 true,False变成了 fasle 3、从json模块的对应源码中可以查看到python 数据转化成 json可识别的数据对应的表关系如下 解码 decode(json-python)
1、以博客园的登录成功结果{success:True}为例我们其实最想知道的是 success 这个字段返回的是 True 还是 False以便于我们对接口进行断言以下是fiddler抓包博客园登录成功的结果 2、如果以 content 字节输出返回的是一个字符串{success:true}这样获取后面那个结果就不方便了导致断言也不方便
3、如果经过 json 解码后返回的就是一个字典{usuccess: True}这样获取后面那个结果就用字典的方式去取值result2[success]这样不言而喻断言也就简单方便了
4、由于博客园的登录机制的改变我们这里接着上一篇的删除随笔的返回结果给小伙伴们实战演练一下
5、用fiddler抓包抓到删除新建随笔的请求从抓包结果可以看出返回结果是一个字符串{isSuccess:True}按照上边的步骤用代码实现 6、代码及结果看到了吧就是这么轻松被我们取到其value了接下来就可以进行断言了 7、从json模块的对应源码中可以查看到 json 数据转化成 python 可识别的数据对应的表关系如下 8、参考代码 1 # coding:utf-82 import requests3 # 先打开登录首页获取部分cookie4 url https://passport.cnblogs.com/user/signin5 headers {6 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.07 } # get方法其它加个ser-Agent就可以了8 s requests.session()9 r s.get(url, headersheaders,verifyFalse)
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(c)
18 print (s.cookies)
19 result r.content
20 print(result.decode(utf-8))
21 # 登录成功后保存编辑内容
22 url2 https://i.cnblogs.com/EditPosts.aspx?opt1
23 body {__VIEWSTATE: ,
24 __VIEWSTATEGENERATOR:FE27D343,
25 Editor$Edit$txbTitle:这是绕过登录的标题000,
26 Editor$Edit$EditorBody:p这里是中文内容http://www.cnblogs.com/duhong//p,
27 Editor$Edit$Advanced$ckbPublished:on,
28 Editor$Edit$Advanced$chkDisplayHomePage:on,
29 Editor$Edit$Advanced$chkComments:on,
30 Editor$Edit$Advanced$chkMainSyndication:on,
31 Editor$Edit$lkbDraft:存为草稿,
32 }
33 r2 s.post(url2, databody, verifyFalse)
34 print (r.content.decode(utf-8))
35
36 # 第三步正则提取需要的参数值
37 import re
38 postid re.findall(rpostid(.?), r2.url)
39 print(type(postid))
40 print (postid) # 这里是 list
41 # 提取为字符串
42 print (postid[0])
43 # 第四步删除草稿箱
44 url3 https://i.cnblogs.com/post/delete
45 json3 {postId: postid[0]}
46 r3 s.post(url3, jsonjson3, verifyFalse)
47 result r3.content #content数据是字节输出
48 print(type(result))
49 print(result)
50 #json是经过加码encode成对应python的数据类型
51 result1 r3.json()
52 print (type(result1))
53 print(result1[isSuccess]) 软件测试到测试开发全测试生涯学习路线】
以及全套配套的学习资料视频教程....
【以下路线图太详细了只能展开部分具体的可以在文章末尾扫描小卡片备注000领取哦】
1自动化测试进阶系列 2全栈性能测试监控以及调优 3全栈测试开发平台实战 4全栈安全测试渗透测试 5devops持续集成部署 6全栈接口测试工具进阶 7跨平台自动化测试工具 8大厂简历真题录音 9全栈系列课企业项目实战 总结现阶段如何突出重围呢唯有不断的学习下面是软件测试到测试开发全职业生涯全套学习资料 【需要的可以点击下方官方推广小卡片扫码备注000免费领取】