前言

在提交表单操作的时候,经常会遇到图片上传的操作,图片上传是一个单独的接口,本篇以禅道为例,介绍如何上传图片

上传接口

1.以禅道上提交bug为例,在选择图片时,点确定按钮,就是上传图片了。

2.用fiddler抓包,查看抓到的接口,以下这种接口就是multipart/form-data

先登录

1.因为上传图片是在登录之后操作的,这个需要依赖用户登录

登录需要先访问一次url,提取rand值,然后对rand和原密码进行md5加密。

上传图片

1.上传图片以下这种格式:

2.写成字典格式,key对应name="imgFile"中的"imgFile"

3.value里面是一个元组()

第一个参数是filename=后面对应的值,没有就写None

第二个是上面的这个值“2.png",或者是”文件open打开的二进制流。备注:尝试使用“2.png”,可以生成url,但访问url无图片

第三个是Content-Type对应的类型,如“image/png”

f={

"localUrl":(None,"33.png"),

"imgFile":("33.png",open("33.png","rb"),"image/png")

}

验证是否上传成功

1.获取上传后的地址,放到浏览器的地址栏请求下,看是不是刚才上传的图片

参考代码

注意:上传图片是files参数

# coding:utf-8

import requests

import re

import hashlib

pw="P@ssw0rd"

s=requests.Session()

headers={

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"

}

vrand=0

while(True):

rs1=s.get("http://localhost/zentaopms/www/user-login.html",headers=headers)

rs1.encoding='utf-8'

#print(rs1.text)

rand=re.findall(r"'verifyRand' value='(.+?)'",rs1.text)

#print(rand[0])

if len(rand[0])==10:

vrand=rand[0]

break

print(vrand)

#方式一

hash=hashlib.md5()

hash.update(pw.encode('utf-8'))

f=hash.hexdigest()+vrand

#print(f)

#方式二

hash2=hashlib.md5(f.encode('utf-8'))

pwd=hash2.hexdigest()

print(pwd)

data={

"account":"fuhui",

"password":pwd,

"referer":"http://localhost/zentaopms/www/bug-browse-6.html",

"verifyRand":vrand

}

rs2=s.post("http://localhost/zentaopms/www/user-login.html",headers=headers,data=data)

rs2.encoding='utf-8'

#print(rs2.text)

rs3=s.get("http://localhost/zentaopms/www/bug-browse-6.html",headers=headers)

rs3.encoding='utf-8'

#print(rs3.text)

result=re.findall(r"\(.+?)\",rs3.text)

print(result)

if result[0]=="退出":

print("登录成功")

#上传图片

urlp="http://localhost/zentaopms/www/file-ajaxUpload-5f2b5bf056387.html?dir=image"

f={

"localUrl":(None,"33.png"),

"imgFile":("33.png",open("33.png","rb"),"image/png")

}

rp=s.post(urlp,files=f)

rp.encoding="utf-8"

try:

purl="http://localhost"+rp.json()["url"]

print("上传图片后,图片的url:{}".format(purl))

except Exception as msg:

print("返回值不是json格式的,错误为:{}".format(msg))

#print(rp.content)

#print(rp.text.encode("utf-8").decode("unicode_escape"))

python自动上传图片_python接口自动化(二十一) multipart/form-data上传图片相关推荐

  1. 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)

    python接口自动化一(设计一款自己的接口自动化框架) 一.起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest.当接口数量不怎么多时还好, ...

  2. 怎么用python自动注册_python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  3. python unittest断言_python接口自动化(二十四)--unittest断言——中(详解)

    简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言.这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京 ...

  4. python自动化测试断言_python接口自动化(二十五)--unittest断言——下(详解)...

    本文转载自: https://www.cnblogs.com/du-hong/p/10766314.html 简介 本篇还是回归到我们最初始的话题,想必大家都忘记了,没关系看这里:传送门  没错最初的 ...

  5. python 贴吧自动发帖_python接口自动化3-自动发帖(session)

    # coding:utf-8 import requests # 先打开登录首页,获取部分cookie url = "https://passport.cnblogs.com/user/si ...

  6. python自动测试n_接口自动化:Jenkins 自动构建python+nose测试

    参考: 通过Jenkins自动化构建python nose测试分两步: 1. 创建节点(节点就是执行自动化测试的机器): 2. 创建任务并绑定节点(用指定的机器来跑我们创建的任务,这里我们选择执行一段 ...

  7. python 基于unittest写接口自动化脚本

    已过时.如感兴趣,请移步这篇文章 https://blog.csdn.net/tomoya_chen/article/details/121550706 python 基于unittest写接口自动化 ...

  8. python自动化接口测试中的cookies怎么实现_Python接口自动化之cookie、session应用

    ------·今天距2021年260天·------ 这是ITester软件测试小栈第112次推文 在上一篇Python接口自动化测试系列文章:Python接口自动化-requests模块之post请 ...

  9. python接口自动化关联参数_python接口自动化7-参数关联

    前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 (博客园的登录机制已经变了,不能用账号和密码登录了 ...

最新文章

  1. 九度OJ 1525 子串逆序打印 -- 2012年Google校园招聘笔试题目
  2. 如何查看手机连接wifi密码的记录
  3. Python基础教程:copy()和deepcopy()
  4. Transformer再下一城!low-level多个任务榜首被占领,北大华为等联合提出预训练模型IPT
  5. CAS单点登录 - 用户登录与校验
  6. LeetCode 978. 最长湍流子数组(DP)
  7. 技术架构演进|0到千万DAU,微淘如何走过?
  8. 令人迷惑的硬币翻转(洛谷P1146题题解,Java语言描述)
  9. 【转载】vim常用命令总结
  10. PDE抛物型方程数值解法总结与例题分析
  11. OpenGL 学习 显示列表
  12. Aurelia – 模块化,简单,可测试的 JS 框架
  13. IOS view的圆角和阴影并存
  14. filebeat日志采集的一次流程记录
  15. python抓取直播源 并更新_如何抓取和转换播放电视直播源m3u8?
  16. vs 2017官网下载、QT下载
  17. MP4BOx hint等常用命令
  18. 移动支付深入我们的生活,行业态势又如何?
  19. 夏敏捷 第39本著作《微信小程序游戏开发快速入门到实战》
  20. word转pdf组合的图片出现灰线,如何处理

热门文章

  1. html5 表单for,HTML5 for(网页表单制作)(姬岚洋).doc
  2. 保单OCR识别技术介绍
  3. Linux 系统版本查询命令
  4. aes 256 ecb 加解密 pkcs7补全 python JS
  5. 三个故事告诉你,活得简单,才能活得自由!
  6. Github进行fork后的仓库,如何与原仓库同步?
  7. Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件
  8. 必须了解的银行卡知识
  9. Oracle redo/undo 原理理解
  10. 中文字体的TextMeshPro