美文网首页py接口自动化python接口自动化
python接口自动化(十五)--参数关联接口(详解)

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

作者: 北京_宏哥 | 来源:发表于2019-11-27 14:43 被阅读0次

    简介

      我们用自动化新建任务之后,要想接着对这个新建任务操作,那就需要用参数关联了,新建任务之后会有一个任务的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 2import requests 3# 先打开登录首页,获取部分session 4url ="http://localhost:8080/jenkins/j_acegi_security_check" 5headers = { 6"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0" 7}  # get方法其它加个ser-Agent就可以了 8d = {"j_username":"admin", 9"j_password":"111111",10"from":"",11"Submit": u"登录",12"remember_me":"on"13    }1415s = requests.session()16r = s.post(url, headers=headers, data=d)17#print (r.content.decode('utf-8'))18# 正则表达式提取账号和登录按钮19import re20t = re.findall(r'<b>(.+?)</b>', r.content.decode('utf-8'))  # 用python3的这里r.content需要解码21print (t[0])22print (t[1])23#新建任务24url1 ="http://localhost:8080/jenkins/createItem"25body = {"name":"6666",26"mode":"hudson.model.FreeStyleProject",27"Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906",28"json":{"name":"6666",29"mode":"hudson.model.FreeStyleProject",30"Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906"3132        }33}34print(type (body))35import urllib36import sys37#获取name的值38name = body['name']39print('name:'+name)40#获取body的值41Jenkins_Crumb = body['Jenkins-Crumb']42print('body的值是:',body['Jenkins-Crumb'])43r2 = s.post(url1, data=body, verify=False)44#print (r2.content.decode('utf-8'))45#删除新建任务46url2 ="http://localhost:8080/jenkins/job/"+name+"/doDelete"47body1 = {48"Jenkins-Crumb": Jenkins_Crumb49}5051r3 = s.post(url2, data=body1, verify=False)52print (r3.content.decode('utf-8'))53#删除成功重定向到主界面(由于抓包没有看到response的结果,只知道重定向主界面)54print(r3.url)

    五、小结

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

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

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

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

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

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

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

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

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

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

    相关文章

      网友评论

        本文标题:python接口自动化(十五)--参数关联接口(详解)

        本文链接:https://www.haomeiwen.com/subject/rwupwctx.html