
最近做一個登錄介面測驗中,發現了以下的一些場景,本次將所遇到的問題以及解決程序做下記錄:
1、抓包發現登錄操作時,先后請求三個介面,并且每個介面有關聯
2、每次請求都需要保留cookie資訊,下個介面請求需要
3、每個介面回傳資料非json格式,提取資料需要另外操作
本篇檔案就從這三點來開始講
1、首先看抓包情況與大致框架分析

先后請求3條介面,然后我們一條一條來分析
①整體來看,都是get請求,且共同引數都是service、callback、_,第2條和第3條都還有其他的引數

②第1條介面回傳的資料中data下的兩個欄位就是第2個介面的引數

③第2條介面回傳資料中的某個欄位是第3條介面的引數
綜合以上就寫大致的框架
#coding:utf-8
import requests,re
url = "xxxxx"
#tt就代替那個_作為引數了
def login1(service,callback,tt):
pass
#三條介面相互依賴,第2個介面引數來源第1個介面回傳值
def login2():
pass
#三條介面相互依賴,第3個介面引數來源第2個介面回傳值
def login3():
pass
if __name__ == '__main__':
service = 'xxxxxx'
callback = 'xxxxxxx'
tt = 'xxxxxxx'
login3(service, callback, tt)
2、然后就是正常的撰寫get請求了

這里的回傳值因為不是json格式,就不用json.loads() 這么寫了,先列印查看

3、上面已經說到,這里的lt和execution 都是下個介面的引數,所以此刻需要將他們的值提取出來
這就涉及到正則提取了
ps:推薦個除錯的網站 http://tools.jb51.net/regex/javascript
python正則表達學習地址:https://www.jb51.net/article/177521.htm
python中這里寫起來也簡單,具體見下面腳本中的備注資訊
def login1(service,callback,tt):
print("開始執行login1")
url = url1 + "/sso/login"
params = {
"service":service,
"callback":callback,
"_":tt
}
req = requests.get(url = url,params=params)
print(req.text)
#回傳結果轉換為字串
response_str = str(req.text)
#正則提取字串資訊,回傳串列,提取data下的資訊
m = re.findall(r'{.*?}',response_str)[0]
#data下就是key-value形式,通過eval()將字串轉換為字典,然后字典中通過key提取到value值
lt = eval(m)['lt']
execution = eval(m)['execution']
return lt,execution
4、第2個介面撰寫,并將第1個介面回傳的東西帶入
def login2(service,callback,tt):
lt,execution = login1(service,callback,tt)
print("開始執行login2")
執行程序中發現報302錯誤
302錯誤:redirect,代表暫時性轉移;意思就是你訪問網址a,但是因為服務端的攔截器或者其他代碼處理,會被重定向到網址b,
利用requests模擬登錄時,直接使用request.get(url),容易造成 302 重定向,究其原因是因為cookie不持久(requests自帶cookie處理,但不持久)
所以這里 我們就需要將cookie存盤下來并使用起來
具體cookie用法見路徑:https://www.cnblogs.com/liuzhzhao/p/12114453.html
5、知道怎么使用了,那么我們代碼修改一下

后面的腳本就照葫蘆畫瓢了,第1個介面的cookie資訊保存給到第2個介面使用,第2個介面的cookie保存,給到第3個介面使用
整體上就寫完了,后面需要單獨補充下就好
本次主要知識點:介面依賴呼叫、cookie保存與使用、python關鍵資訊正則提取
最后:測驗人福利
技術行業,一定要提升技術功底,豐富自動化專案實戰經驗,這對于你未來幾年職業規劃,以及測驗技術掌握的深度非常有幫助,
金九銀十面試季,跳槽季,整理面試題已經成了我多年的習慣!下面有我近幾年的收集和整理,整體是圍繞著【軟體測驗】來進行整理的,主體內容包含:python自動化測驗專屬視頻、Python自動化詳細資料、全套面試題等知識內容,

不要因為拿8k薪資就自卑慚愧,不要應為拿了20多K薪水就沾沾自喜,不要應為拿了30-45看就故步自封,人生不是為了賺那點薪水,你需要的是打開一份事業,
愿你我相遇,皆有所獲! 歡迎關注微信公眾號:【傷心的辣條】 免費領取一份216頁軟體測驗工程師面試寶典檔案資料,以及相對應的視頻學習教程免費分享!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/251447.html
標籤:其他
