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

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

简介


  

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

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


一、删除新建任务



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

1232840-20190410100142473-890749140.png


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

1232840-20190410100833406-1133193107.png


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


1232840-20190410101314596-1293215964.png


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


二、提取参数



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


1232840-20190410102243835-275675165.png


三、传参



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

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

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


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


1232840-20190410103226878-1130583889.png


4、302重定向


1232840-20190410103106417-321307515.png


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


1232840-20190410103459932-438816878.png


四、参考代码



# coding:utf-8
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": "111111",
     "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[0])
 print (t[1])
#新建任务
 url1 = "http://localhost:8080/jenkins/createItem"
body = {"name":"6666",
        "mode": "hudson.model.FreeStyleProject",
        "Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906",
        "json":{"name":"6666",
                "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)在删除新建任务出打上断点,双击前边即可出现一个红色的大圆点


1232840-20190410151411971-729052573.png


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


1232840-20190410151819124-1886457889.png

 

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


1232840-20190410151619234-957694967.png


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

1232840-20190410151903262-329092371.png


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


1232840-20190410152051748-1639698550.png


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

1232840-20190410152454855-780685709.png


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


1232840-20190410152953831-1349312086.png

相关文章
|
2月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
213 61
|
1月前
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
75 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
1月前
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
114 15
|
2月前
|
分布式计算 MaxCompute 对象存储
|
1月前
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
70 3
|
2月前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
96 7
|
测试技术 Python
python接口自动化(五)--接口测试用例和接口测试报告模板(详解)
当今社会在测试领域,接口测试已经越来越多的被提及,被重视,而且现在好多招聘信息要对接口测试提出要求。区别于传统意义上的系统级别测试,很多测试人员在接触到接口测试的时候,也许对测试执行还可以比较顺利的上手,但一 提到相关的文档,比如测试用例和报告,就有些不知所措了。这类问题在我加入的几个测试的群里,经常看到一些人在不断提问。   今天就用这篇文章来说说接口测试用例和报告。
476 2
python接口自动化(五)--接口测试用例和接口测试报告模板(详解)
|
Web App开发 网络协议 jenkins
python接口自动化(四)--接口测试工具介绍(详解)
如果有工具,可以大大提高你的效率,可以达到事半功倍,但是不是所有工具都能够支持你完成这个任务。下面我们就来挑选几个常用和常见的工具,简单介绍一下。如果需要或者有兴趣可以在网上查看各种工具对应的资料进行深入人的学习,这里带领大家了解一下,碰到这些工具会用、了解、知道这些工具就达到目的了,不要到时候说到测试工具,一问三不知,一脸懵逼,那样就尴尬
407 1
python接口自动化(四)--接口测试工具介绍(详解)
|
安全 Java 测试技术
python接口自动化(三)--如何设计接口测试用例(详解)
上篇我们已经介绍了什么是接口测试和接口测试的意义。在开始接口测试之前,我们来想一下,如何进行接口测试的准备工作。或者说,接口测试的流程是什么?有些人就很好奇,接口测试要流程干嘛?不就是拿着接口文档直接利用接口 测试工具测试嘛。其实,如果只是三五个接口,你可以这么做一个临时的接口测试。但是,如果是上百个接口,或者,你们公司的这个项目,第一次做接口测试,那么,我们还是很有必要严格遵守接口测试的流程。
383 0
python接口自动化(三)--如何设计接口测试用例(详解)

推荐镜像

更多