python接口自动化(十五)--参数关联接口(详解)

简介

  咱们用自动化新建任务以后,要想接着对这个新建任务操做,那就须要用参数关联了,新建任务以后会有一个任务的Jenkins-Crumb,获取到这个Jenkins-Crumb,就能够经过传这个任务Jenkins-Crumb继续操做这个新建的任务。python

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

1、删除新建任务

一、咱们前面讲过登陆后新建任务后,那能够继续接着操做:删除刚才新建的任务正则表达式

二、用fiddler抓包,抓到删除新建任务的请求,从抓包结果能够看出,传的data参数是Jenkins-Crumbjson

3.这个Jenkins-Crumb哪里来的呢?能够看上个请求的body浏览器

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

2、提取参数

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

3、传参

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

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

三、接着前面的新建任务操做,就能够删除成功了ui

注意:若是想看清楚,能够在删除新建任务出打断点,看到新建的任务后,再次执行下边的代码 看看是否是能够删掉新建任务

四、302重定向

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

4、参考代码

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)复制代码

5、小结

一、细心地、认真的小伙伴必定会发现我代码请求的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"复制代码

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

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

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

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

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

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

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

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

为了方便你们在移动端也能看到我分享的博文,现已注册我的微信公众号,扫描左下方二维码便可,欢迎你们关注,有时间会及时分享相关技术博文。

为了方便你们互动讨论相关技术问题,现已组建专门的微信群,因为微信群满100,请您扫描右下方宏哥我的微信二维码拉你进群
(请务必备注:进群)
,欢迎你们加入这个你们庭,咱们一块儿畅游知识的海洋。

感谢您花时间阅读此篇文章,若是您以为这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
若是您以为阅读本文对您有帮助,请点一下左下角 “推荐”按钮,您的
“推荐”
将是我最大的写做动力!另外您也能够选择 关注我,能够很方便找到我!
本文版权归做者和博客园共有,来源网址: www.cnblogs.com/du-hong 欢迎各位转载,可是未经做者本人赞成,转载文章以后必须在文章页面明显位置给出做者和原文链接,不然保留追究法律责任的权利!
我的微信公众号 我的微信
相关文章
相关标签/搜索