《爆肝整理》保姆级系列教程python接口自动化(十五)--参数关联接口(详解)

news/2024/7/7 22:47:54

简介

  我们用自动化新建任务之后,要想接着对这个新建任务操作,那就需要用参数关联了,新建任务之后会有一个任务的Jenkins-Crumb,获取到这个Jenkins-Crumb,就可以通过传这个任务Jenkins-Crumb继续操作这个新建的任务。

大致流程步骤:登录—>新建任务—>web界面操作删除—>抓取删除操作请求—>提取参数—>传参—>代码实现。

一、删除新建任务

1、我们前面讲过登录后新建任务后,那可以继续接着操作:删除刚才新建的任务

 

2、用fiddler抓包,抓到删除新建任务的请求,从抓包结果可以看出,传的data参数是Jenkins-Crumb

 

3.这个Jenkins-Crumb哪里来的呢?可以看上个请求的body

4、也就是说在新建任务的时候,系统随机生成一个Jenkins-Crumb参数的值,body里面带有Jenkins-Crumb这个参数。那接下来我们提取出来就可以了 

二、提取参数

1、我们需要的参数Jenkins-Crumb是在新建任务是body里Jenkins-Crumb的值,这时候从body里提出对应的参数值就行了(注意:每次保存需要修改内容,不能重复)

三、传参

1、删除新建任务的data参数传上面取到的参数:{"Jenkins-Crumb": Jenkins_Crumb}

2、data数据类型post里面填data就行

3、接着前面的新建任务操作,就可以删除成功了

注意:如果想看清楚,可以在删除新建任务出打断点,看到新建的任务后,再次执行下边的代码 看看是不是可以删掉新建任务

4、302重定向

 5、content内容复制到记事本,修改后缀以后,浏览器查看有“欢迎来到Jenkins

四、参考代码

 1 # coding:utf-8
 2 import requests
 3 # 先打开登录首页,获取部分session
 4 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 
15 s = requests.session()
16 r = s.post(url, headers=headers, data=d)
17 #print (r.content.decode('utf-8'))
18 # 正则表达式提取账号和登录按钮
19 import re
20 t = re.findall(r'<b>(.+?)</b>', r.content.decode('utf-8'))   # 用python3的这里r.content需要解码
21 print (t[0])
22 print (t[1])
23 #新建任务
24 url1 = "http://localhost:8080/jenkins/createItem"
25 body = {"name":"6666",
26         "mode": "hudson.model.FreeStyleProject",
27         "Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906",
28         "json":{"name":"6666",
29                 "mode": "hudson.model.FreeStyleProject",
30                 "Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906"
31 
32         }
33 }
34 print(type (body))
35 import urllib
36 import sys
37 #获取name的值
38 name = body['name']
39 print('name:'+name)
40 #获取body的值
41 Jenkins_Crumb = body['Jenkins-Crumb']
42 print('body的值是:',body['Jenkins-Crumb'])
43 r2 = s.post(url1, data=body, verify=False)
44 #print (r2.content.decode('utf-8'))
45 #删除新建任务
46 url2 = "http://localhost:8080/jenkins/job/"+name+"/doDelete"
47 body1 = {
48             "Jenkins-Crumb": Jenkins_Crumb
49 }
50 
51 r3 = s.post(url2, data=body1, verify=False)
52 print (r3.content.decode('utf-8'))
53 #删除成功重定向到主界面(由于抓包没有看到response的结果,只知道重定向主界面)
54 print(r3.url)

五、小结

 1、细心地、认真的小伙伴一定会发现我代码请求的name的值是6666,或者英文,而不是“北京-宏哥”的中文,原因是中文出现的url中有时候会报错。解决办法:

1 from urllib.parse import quote
2 import urllib.request
3 name = quote(name)
4 url2 = "http://localhost:8080/jenkins/job/"+name+"/doDelete"

2、给小伙伴们演示一下,打断点

(1)在删除新建任务出打上断点,双击前边即可出现一个红色的大圆点

(2)查看jenkins主界面,没有新建任务

(3)点击右上方的昆虫图标

(4)进入debug模式,代码运行到断点处停止运行

 

(5)刷新主界面,再次查看jenkins主界面,有新建任务-空白名

 

(6)点击右边的绿色图标一次性执行完后边的代码,或者是上边拐弯蓝色图标,一步一步执行完后边的代码

 

(7)刷新主界面,再次查看jenkins主界面,你会看到:新建任务-空白名  神奇的消失了,他就这样被你神不知鬼不觉的干掉了

 

 【软件测试到测试开发全测试生涯学习路线】

以及全套配套的学习资料,视频教程....

:【以下路线图太详细了只能展开部分,具体的可以在文章末尾扫描小卡片备注000领取哦】

1:自动化测试进阶系列:

2:全栈性能测试,监控以及调优

3:全栈测试开发平台实战

4:全栈安全测试渗透测试

5:devops持续集成部署

6:全栈接口测试工具进阶

7:跨平台自动化测试工具

8:大厂简历,真题,录音

9:全栈系列课企业项目实战

总结:现阶段如何突出重围呢?唯有不断的学习,下面是软件测试到测试开发全职业生涯全套学习资料

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


http://lihuaxi.xjx100.cn/news/894112.html

相关文章

C语言实例|编写C程序在控制台打印余弦曲线

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…

Baklib知识库管理平台,协助组织提升知识管理水平

随着信息时代和知识经济时代的到来&#xff0c;企业内部信息资料繁多冗杂&#xff0c;知识管理逐渐成为各大企业的重要工作之一&#xff0c;企业管理者无不感受到巨大的压力&#xff0c;怎么样将知识进行有效的管理&#xff0c;成为一个难点&#xff0c;并且随着信息不断的更迭…

SRV6跨域优势

背景 运营商网络作为一张覆盖全国的网络&#xff0c;其主体分为骨干&#xff0c;省干&#xff0c;城域网层级&#xff0c;主流的管理模式为分层级管理。随着运营商网络服务的终端规模不断增长&#xff0c;不同地理位置之间网络连接的需求变得非常的普遍&#xff0c;但不同网络…

全网详解 .npmrc 配置文件:比如.npmrc的优先级、命令行,如何配置.npmrc以及npm常用命令等

文章目录1. 文章引言2. 简述.npmrc3. 配置.npmrc3.1 .npmrc配置文件的优先级3.2 .npmrc设置的命令行3.3 如何设置.npmrc4. 配置发布组件5. npm常用命令6. 重要备注6.1 yarn6.2 scope命名空间6.3 镜像出错1. 文章引言 今天在某低代码平台开发项目时&#xff0c;看到如下编译配置…

如何正确的在Flutter中添加webview

前言 为什么要在flutter中引入webview&#xff1f;这不是废话么&#xff0c;当然是为了加载一个网页&#xff0c;这不是移动端最基本的需求么&#xff0c;哈哈&#xff01;说的真不错&#xff0c;接下来我要是告诉你我的用法&#xff0c;你可能要大吃一惊。我的用处很简单&…

Java实现调用ChatGPT的相关接口(附详细思路)

目录1.0.简单版2.0.升级版2-1.call.timeout()怎么传入新的超时值2-2.timeout(10, TimeUnit.SECONDS)两个参数的意思&#xff0c;具体含义3.0.进阶版3-1.java.net.SocketTimeoutException: 超时如何解决4.0.终极版1.0.简单版 以下是一个使用 Java 实际请求 ChatGPT 的简单示例代…

【DockerCE】Docker-CE 23.0.1正式版发布

很意外啊&#xff01;Docker社区版竟然直接从20.xx.xx版本&#xff0c;升级到23.xx.xx版本了。官网地址&#xff08;For RHEL/CentOS 7.9&#xff09;&#xff1a;https://download.docker.com/linux/centos/7/x86_64/stable/Packages/23.0.1版本官方安装包如下&#xff1a;# l…

基于ArgoCD实现k8s环境下的持续部署

什么是 argo CD Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Argo CD是一个基于Kubernetes的声明式的GitOps工具。 这里我们引入了一个新的概念&#xff0c; 什么是GitOps GitOps是以Git为基础&#xff0c;使用CI/CD来更新运行在云原生环境…