python接口自动化17-multipart/form-data表单提交
前言
multipart/form-data这种格式官方文档给的参考案例比较简单,实际情况中遇到会比较复杂,本篇讲解multipart/form-data的表单如何提交,非图片上传
禅道提交bug
1.以禅道提交bug为参考案例,手动操作一次提交bug,抓包查看Content-Type: multipart/form-data

2.在WebForms里面查看参数详情

参数填写
1.注意了,这里的参数对应为字典格式,字典的key对应WebForms里查看的name="这里的参数",value对应WebForms查看的value值
f = {
"product": "1",
"module": "0",
"project": "",
"openedBuild[]": "trunk",
"assignedTo": "admin",
"type": "codeerror",
"os": "all",
"browser": "all",
"color": "",
"title": "yoyoketang-这是一个bug描述1122",
"severity": "3",
"pri": "0",
"steps": '<p>[步骤]</p>\
<p>1、第一步点</p>\
<p>2、第二步点</p>\
<p>3、点三步点</p>\
<p>[结果]</p>\
<p><img src="data/upload/1/201712/072254170557cdn.png" alt="" /></p>\
<p>[期望]</p>',
"story": "0",
"task": "0",
"mailto[]": "",
"keywords": "",
"files[]": "",
"labels[]": "",
"uid": "5a2955c884f98",
"case": "0",
"caseVersion": "0",
"result": "0",
"testtask": "0"
}
2.如果有图片上传,这里<img src="data/upload/1/201712/072254170557cdn.png" 这个图片地址就是上一篇讲到的上传图片接口返回的图片地址(相对路径)
参考代码
1.multipart/form-data这里传的是data参数(上一篇文件上传是files参数)
2.这里头部不要加Content-Type: multipart/form-data这个参数,会报错
# coding:utf-8
import requests
base = 'http://127.0.0.1:81/' # 禅道的服务器地址
loginUrl = base+"/zentao/user-login.html"
h = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding": "gzip, deflate",
"Referer": "http://127.0.0.1/zentao/user-login.html",
# "Cookie": # 头部没登录前不用传cookie,因为这里cookie就是保持登录的
"Connection": "keep-alive",
"Content-Type": "application/x-www-form-urlencoded",
}
body = {"account":"admin",
"password":"e10adc3949ba59abbe56e057f20f883e",
"keepLogin[]":"on",
"referer":"http://127.0.0.1/zentao/my/"
}
s = requests.session() # 保持会话
r = s.post(loginUrl, data=body, headers=h)
print r.content # 打印结果看到location='http://127.0.0.1/zentao/my/'说明登录成功了
# 提交bug
url1 = "http://127.0.0.1:81/zentao/bug-create-1-0-moduleID=0.html"
f = {
"product": "1",
"module": "0",
"project": "",
"openedBuild[]": "trunk",
"assignedTo": "admin",
"type": "codeerror",
"os": "all",
"browser": "all",
"color": "",
"title": "yoyoketang-这是一个bug描述1122",
"severity": "3",
"pri": "0",
"steps": '<p>[步骤]</p>\
<p>1、第一步点</p>\
<p>2、第二步点</p>\
<p>3、点三步点</p>\
<p>[结果]</p>\
<p><img src="data/upload/1/201712/072254170557cdn.png" alt="" /></p>\
<p>[期望]</p>',
"story": "0",
"task": "0",
"mailto[]": "",
"keywords": "",
"files[]": "",
"labels[]": "",
"uid": "5a2955c884f98",
"case": "0",
"caseVersion": "0",
"result": "0",
"testtask": "0"
}
r = s.post(url1, data=f)
print r.content

python接口自动化17-multipart/form-data表单提交的更多相关文章
- 关于form与表单提交操作的一切
原文链接:http://caibaojian.com/form.html 你知道,一个表单里面只要有form元素,如果没有给action加一个默认值,为空白的时候,当你刷新页面时,会弹出一个警告框提示 ...
- 阻止form空表单提交----JavaScript
网上看到很不错的阻止form空表单提交 第一种方法 <div class="warp"> <h2>登录到pfan空间</h2> <p> ...
- WP Mail SMTP插件解决Contact Form 7表单提交失败问题
WP Mail SMTP插件解决Contact Form 7表单提交失败问题 WP Mail SMTP是一款非常优秀的解决WordPress主机因为不支持或者是禁用了mail()函数,导致无法实现在线 ...
- 【转】 关于form与表单提交操作的一切
参考一:http://caibaojian.com/form.html 参考二:https://blog.csdn.net/weixin_42301628/article/details/867156 ...
- Form Submit表单提交
<button type="button" ng-click="submit()"class="btn btn-block btn-danger ...
- python接口自动化11-post传data参数案例
前言: 前面登录博客园的是传json参数,有些登录不是传json的,如jenkins的登录,本篇以jenkins登录为案例,传data参数. 一.登录jenkins抓包 1.登录jenkins,输入账 ...
- python接口自动化19-requests-toolbelt处理multipart/form-data
requests-toolbelt 1.官方文档地址:requests-toolbelt官方文档 2.环境安装 pip install requests-toolbelt multipart/form ...
- python接口自动化-requests-toolbelt处理multipart/form-data
1.requests-toolbelt官方文档:https://pypi.org/project/requests-toolbelt/ 2.环境安装 pip install requests-tool ...
- python接口自动化(十)--post请求四种传送正文方式(详解)
简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...
随机推荐
- 7.18 NOIP模拟测试5 星际旅行+砍树+超级树
T1 星际旅行 题意:n个点,m条边,无重边,有自环,要求经过m-2条边两次,2条边一次,问共有多少种本质不同的方案.本质不同:当且仅当至少存在一条边经过次数不同. 题解:考试的时候理解错题,以为他是 ...
- Educational Codeforces Round 70 题解
噩梦场. 题目出奇的难,好像一群外国老哥看 A 看着看着就哭了-- A 找到 \(b\) 最低的 \(1\),这个 \(1\) 肯定要跟 A 中的一个 \(1\) 搭配,而且是能搭配的 \(1\) 中 ...
- [LeetCode] 883. Projection Area of 3D Shapes 三维物体的投影面积
On a N * N grid, we place some 1 * 1 * 1 cubes that are axis-aligned with the x, y, and z axes. Each ...
- [LeetCode] 8. String to Integer (atoi) 字符串转为整数
Implement atoi which converts a string to an integer. The function first discards as many whitespace ...
- Spring mvc 前后台通过json交互【转】
原文转自:https://www.cnblogs.com/zhaojiankai/p/8184596.html 本节内容: @RequestBody @ResponseBody 请求json,响应js ...
- 解决WebBrowser控件会导致应用程序占用内存居高不下问题
WebBrowser 是一个 .NET 控件类,在 .NET Framework 2.0 版中新增.WebBrowser 类使用户可以在窗体中导航网页,下面我们来看在开发中碰到WebBrowser控件 ...
- Git恢复之前版本的两种方法reset、revert(图文详解)(转)
一.问题描述在利用github实现多人合作程序开发的过程中,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交前的样子,本文总结了两种解决方法:回退(reset).反做(reve ...
- 使用arcpy添加grb2数据到镶嵌数据集中
#!coding: utf-8 import numpy as np import arcpy def addGRB2ToMosaic(grb2name): print "start add ...
- [转帖]超能课堂(210) 笔记本中常说的PL1、PL2到底如何影响CPU性能?
超能课堂(210)笔记本中常说的PL1.PL2到底如何影响CPU性能? https://www.expreview.com/71943.html 本文约 4070 字,需 7 分钟阅读 (切换至标准版 ...
- [转帖]Linux监测某一时刻对外的IP连接情况
Linux监测某一时刻对外的IP连接情况 https://blog.csdn.net/twt326/article/details/81454171 公司机器有病毒 需要分析一下. 之前有需要,在CS ...