当前位置: 首页 > news >正文

《爆肝整理》保姆级系列教程python接口自动化(十一)--发送post【data】(详解

简介 

  前面登录的是传 json 参数,由于其登录机制的改变没办法演示,然而在工作中有些登录不是传 json 的,如 jenkins 的登录,这里小编就以jenkins 登录为案例,传 data 参数,给各位童鞋详细演练一下。

一、登录jenkins抓包

1、浏览器上登录jenkins,输入账号和密码,点击登录

2、fiddler抓包工具抓取jenkins登录的过程

3、可以清楚地看到这个body参数并不是json格式,是key=value格式,也就是前面介绍post请求四种数据类型里面的第一种

二、请求头部

1.上面抓包已经知道body的数据类型了,那么头部里面Content-Type类型也需要填写对应的参数类型

三、实现登录

1、登录实例代码如下:

注意:此处的登录URL是fiddler抓包抓到的,而并非是浏览器的URL地址,如果你复制的是浏览器的地址,就会报错了

 1 # coding:utf-82 import requests3 # 先打开登录首页,获取部分session4 url = "http://localhost:8080/jenkins/j_acegi_security_check"5 headers = {6             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"7            }  # get方法其它加个ser-Agent就可以了8 d = {"j_username": "admin",9      "j_password": "111111",
10      "from": "",
11      "Submit": u"登录",
12      "remember_me": "on"
13      }
14 s = requests.session()
15 r = s.post(url, headers=headers, data=d)
16 print (r.content.decode('utf-8')
)

2、运行后的结果如下:

3、为了更好地查看你可以将其拷贝到记事本,保存,然后将文件后缀名修改成.html或者.htm,用浏览器打开查看

四、判断登录是否成功

1.首先这个登录接口有重定向,看左边会话框302,那登录成功的结果看最后一个200就行

2.返回的结果并不是跟博客园一样的json格式,返回的是一个html页面 

五、判断登录成功

1.判断登录成功,可以抓取页面上的关键元素,比如:账号名称admin,注销按钮

2.通过正则表达式提出这2个关键字

 六、参考代码

 1 # coding:utf-82 import requests3 # 先打开登录首页,获取部分session4 url = "http://localhost:8080/jenkins/j_acegi_security_check"5 headers = {6             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"7            }  # get方法其它加个ser-Agent就可以了8 d = {"j_username": "admin",9      "j_password": "111111",
10      "from": "",
11      "Submit": u"登录",
12      "remember_me": "on"
13      }
14 s = requests.session()
15 r = s.post(url, headers=headers, data=d)
16 #print (r.content.decode('utf-8'))
17 # 正则表达式提取账号和登录按钮
18 import re
19 t = re.findall(r'<b>(.+?)</b>', r.content.decode('utf-8'))   # 用python3的这里r.content需要解码
20 print (t[0])
21 print (t[1])

七、遇到问题可解决方法

注意这里边遇到的问题python3遇到的问题,或许python2没有这些问题,笔者没有实践,有兴趣的自己可以试一下

1、如果打印content,没有加后边的.decode('utf-8'),会出现乱码,解决方法加上即可。

2、如果正则提取没有加.decode('utf-8'),会报如下错误,解决方案也是加上即可

八、小结

  jenkins 代码模拟登陆到这里就结束,实际工作中的登录接口也就是这些,记住万变不离其宗,举一反三。

 总结:
现阶段很多人都在说软件测试太内卷了,工作太难找了,竞争太激烈了。那么如何在这样的现状下使得自己更具有竞争力呢?笔者认为大家需要迅速学习软件测试的硬技能,提升自己的业务能力,早日摆脱初中级测试的Title,虽然测试人员众多,但是高级的软件测试人员还是很稀缺,有很多人挂着高级测试的头衔却还在干着初中级测试的活。在掌握这些硬技能的同时,软技能的培养同样重要,沟通能力、自主学习能力越来越被企业看重。

如果不想被这个时代淘汰,就要做好持续学习的准备。下方给大家准备了全套的软件测试,自动化测试全套教程。

【需要的可以点击下方官方推广小卡片扫码备注000免费领取】

http://www.lryc.cn/news/2420.html

相关文章:

  • 【微服务】Nacos注册中心
  • 跟开发打了半个月后,我终于get报bug的正确姿势了
  • js万能类型检测Object.prototype.toString.call——定制Object.prototype.toString.call的检测结果
  • 激光slam学习笔记2--激光点云数据结构特点可视化查看
  • SpringBoot笔记【JavaEE】
  • 目标检测算法之voxelNet与pointpillars对比
  • 电脑里的连接速度双工模式是什么?怎么设置
  • springboot整合单机缓存ehcache
  • 在阿里干了2年的测试,总结出来的划水经验
  • 硬盘分类及挂载硬盘知识补充和介绍
  • 【MyBatis】自定义映射resultMap
  • mysql的锁和事务
  • 为什么B站中的弹幕可以不遮挡人物
  • 数据结构 第八章 查找(静态查找表)
  • 【Python基础】数据类型(元组、列表)
  • 你了解互联网APP搜索和推荐的背后逻辑么?
  • Bug的级别,按照什么划分
  • 微服务项目简介
  • SLAM中坐标轴旋转及ros的接口解释
  • 文件管理(9)
  • PyTorch学习笔记:nn.TripletMarginLoss——三元组损失
  • 冒泡排序详解
  • git极快上手指南超级精简版
  • 蓝桥杯-最长公共子序列(线性dp)
  • GO的并发模式Context
  • 《Redis实战篇》六、秒杀优化
  • 《C++ Primer Plus》第16章:string类和标准模板库(11)
  • 声明和定义
  • Python获取最小路径,查找元素在list中的坐标
  • 数据采集协同架构,集成马扎克、西门子、海德汉、广数、凯恩帝、三菱、海德汉、兄弟、哈斯、宝元、新代、发那科、华中各类数控以及各类PLC数据采集软件