1. 程式人生 > 實用技巧 >python介面自動化(二十二) multipart/form-data表單提交

python介面自動化(二十二) 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值。

bd={
    "product":"6",
    "module":"0",
    "project":"5",
    "openedBuild[]":"trunk",
    "assignedTo":"huyongqin",
    "type":"codeerror",
    "title":"測試8866",
    "severity":"1",
    "pri":"2",
    "steps":"<p>[步驟]開啟瀏覽器;</p><br /><p>[結果]打不開</p><br /><p>[期望]可以開啟</p><br />",
    "oldTaskID":"0",
    "uid":"5f2b6ce9192a9",
    "case":"0"

}

 參考程式碼

1.multipart/form-data這裡傳的是data引數。

2.請求頭部不要加Content-Type:multipart/form-data這個引數。

# 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":"admin",
"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"\<a href=\'\/zentaopms\/www\/user-logout.html' \>(.+?)\<\/a\>",rs3.text)
print(result)
if result[0]=="退出":
    print("登入成功")

#提交bug
burl="http://localhost/zentaopms/www/bug-create-6-0-moduleID=0.html"
bd={
    "product":"6",
    "module":"0",
    "project":"5",
    "openedBuild[]":"trunk",
    "assignedTo":"huyongqin",
    "type":"codeerror",
    "title":"測試8866",
    "severity":"1",
    "pri":"2",
    "steps":"<p>[步驟]開啟瀏覽器;</p><br /><p>[結果]打不開</p><br /><p>[期望]可以開啟</p><br />",
    "oldTaskID":"0",
    "uid":"5f2b6ce9192a9",
    "case":"0"

}
rp=s.post(burl,data=bd)
rp.encoding="utf-8"
print(rp.text)  

執行結果:

檢視禪道系統,發現有剛剛提交的bug。