简介

  我们用自动化新建任务之后,要想接着对这个新建任务操作,那就需要用参数关联了,新建任务之后会有一个任务的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

四、参考代码

 # coding:utf-
import requests
# 先打开登录首页,获取部分session
url = "http://localhost:8080/jenkins/j_acegi_security_check"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
} # get方法其它加个ser-Agent就可以了
d = {"j_username": "admin",
"j_password": "",
"from": "",
"Submit": u"登录",
"remember_me": "on"
} s = requests.session()
r = s.post(url, headers=headers, data=d)
#print (r.content.decode('utf-8'))
# 正则表达式提取账号和登录按钮
import re
t = re.findall(r'<b>(.+?)</b>', r.content.decode('utf-8')) # 用python3的这里r.content需要解码
print (t[])
print (t[])
#新建任务
url1 = "http://localhost:8080/jenkins/createItem"
body = {"name":"",
"mode": "hudson.model.FreeStyleProject",
"Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906",
"json":{"name":"",
"mode": "hudson.model.FreeStyleProject",
"Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906" }
}
print(type (body))
import urllib
import sys
#获取name的值
name = body['name']
print('name:'+name)
#获取body的值
Jenkins_Crumb = body['Jenkins-Crumb']
print('body的值是:',body['Jenkins-Crumb'])
r2 = s.post(url1, data=body, verify=False)
#print (r2.content.decode('utf-8'))
#删除新建任务
url2 = "http://localhost:8080/jenkins/job/"+name+"/doDelete"
body1 = {
"Jenkins-Crumb": Jenkins_Crumb
} r3 = s.post(url2, data=body1, verify=False)
print (r3.content.decode('utf-8'))
#删除成功重定向到主界面(由于抓包没有看到response的结果,只知道重定向主界面)
print(r3.url)

五、小结

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

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

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

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

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

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

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

(5)刷新主界面,再次查看jenkins主界面,有新建任务-北京-宏哥

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

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

python接口自动化(十五)--参数关联接口(详解)的更多相关文章

  1. python接口自动化(七)--状态码详解对照表(详解)

    简介 我们为啥要了解状态码,从它的作用,就不言而喻了.如果不了解,我们就会像个无头苍蝇,横冲直撞.遇到问题也不知道从何处入手,就是想找别人帮忙,也不知道是找前端还是后端的工程师. 状态码的作用是:we ...

  2. Postman接口自动化--Postman Script脚本功能使用详解

    Postman Script 功能,支持原生的JS,所以可以使用JS解决很多接口自动化的一些问题,例如接口依赖.接口参数专递和接口断言等: 这里主要是针对Pre-Request Script 和 Te ...

  3. postman接口自动化,环境变量的用法详解(附postman常用的方法)

    在实现接口自动测试的时候,会经常遇到接口参数依赖的问题,例如调取登录接口的时候,需要先获取登录的key值,而每次请求返回的key值又是不一样的,那么这种情况下,要实现接口的自动化,就要用到postma ...

  4. 【转载自JHBlogs的博客】postman接口自动化,环境变量的用法详解(附postman常用的方法)

    在实现接口自动测试的时候,会经常遇到接口参数依赖的问题,例如调取登录接口的时候,需要先获取登录的key值,而每次请求返回的key值又是不一样的,那么这种情况下,要实现接口的自动化,就要用到postma ...

  5. 第三十五课:Ajax详解

    一个完整的Ajax请求: var xhr = new (self.XMLHttpRequest || ActiveXObject)("Microsoft.XMLHTTP");   ...

  6. Vue.js 源码分析(二十五) 高级应用 插槽 详解

    我们定义一个组件的时候,可以在组件的某个节点内预留一个位置,当父组件调用该组件的时候可以指定该位置具体的内容,这就是插槽的用法,子组件模板可以通过slot标签(插槽)规定对应的内容放置在哪里,比如: ...

  7. java分享第十五天(log4j 格式详解)

    log4j 格式详解  log4j.rootLogger=日志级别,appender1, appender2, -. 日志级别:ALL<DEBUG<INFO<WARN<ERRO ...

  8. python接口自动化(十六)--参数关联接口后传(详解)

    简介 大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础.因此再在沙场实例演练一下博客园的相关接口.我们用自动化发随笔之后,要想接着对这篇随笔操 ...

  9. “全栈2019”Java第六十五章:接口与默认方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  10. 通过Dapr实现一个简单的基于.net的微服务电商系统(十五)——集中式接口文档实现

    之前有小伙伴在评论区留言说如何集成swagger,最开始没有想透给了对方一个似是而非的回答.实际上后来下来想了一下,用.NET5 提供的Source Generator其实可以很方便的实现接口集成.今 ...

随机推荐

  1. Java自学编程学习之路资源合集

    Java Web学习 STEP.1---Java基础最重要 工欲善其事,必先利其器.想要学好Java Web,或者说想要开始学Java Web,Java的基础是必不可少. 基本语法(★★★★★) 数组 ...

  2. XAMPP重置MySQL密码

    找到XAMPP的安装位置,这里以我的为例:C:\xampp 那么MySQL的路径:C:\xampp\mysql phpMyAdmin的路径:C:\xampp\phpMyAdmin 修改MySQL密码 ...

  3. java之SpringMVC的controller配置总结

    先在springmvc-servlet.xml文件作如下配置(注解开发controller) <?xml version="1.0" encoding="UTF-8 ...

  4. Python Tips阅读摘要

    发现了一本关于Python精通知识点的好书<Python Tips>,关于Python的进阶的技巧.摘录一些比较有价值的内容作为分享. *args and **kwargs 在函数定义的时 ...

  5. 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。

    快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC.EntityFrameWork.T4模板技术. 产品界面如下图所示: 源码结构: 开放全部源码,如有需要请联系,QQ:1107141 ...

  6. Python 内置的一些高效率函数用法

    1.  filter(function,sequence) 将sequence中的每个元素,依次传进function函数(可以自定义,返回的结果是True或者False)筛选,返回符合条件的元素,重组 ...

  7. 集群搭建(一)克隆虚拟机静态IP设置

    [抛出问题] 当在搭建集群的时候,我们会将一个安装好相关程序的虚拟机进行克隆,克隆之后,我们会发下一些问题:就是原先的eth0 网卡不见了 原先的网卡 而克隆之后的网卡 会发现原来的网卡eth0 变为 ...

  8. Java多线程-概念与原理

    一.操作系统中线程和进程的概念 现在的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在 ...

  9. PAT1130:Infix Expression

    1130. Infix Expression (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Give ...

  10. redis常见重要性能指标数据分析和相关问题解决方案

    性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息.通过这些信息来分析文章后面提到的一些性能指标. info命令输出的数 ...