正常情況下,我們想打開禪道的“組織”視圖頁面,是需要先在禪道的登錄頁面輸入正確的用戶名和密碼點擊登錄,再切換到“組織”視圖頁面。
如果我們的python代碼這樣寫的話,r1和r2的狀態碼都是200,但r2.text並不是我們想要的。這是因為,r1和r2請求相當於在2個不同的瀏覽器中,發出的兩個請求,彼此是獨立的,那么r2請求就相當於是在沒有登錄的情況下發出的請求。
import requests
paylod = {'account':'admin',
'password':'e10adc3949ba59abbe56e057f20f883e'}
url01 = 'http://localhost:9000/zentao/user-login.html'
url02 = 'http://localhost:9000/zentao/company-browse.html'
r1 = requests.get(url01,params=paylod)
r2 = requests.post(url02)
print(r1.status_code)
print(r2.status_code)
print(r2.text)
那么如何解決這個問題呢
1、我們可以創建一個session對象來存儲請求的缺省值,r2.text可以取到想要的值。
import requests
s=requests.session()
paylod = {'account':'admin','password':'e10adc3949ba59abbe56e057f20f883e'}
url01='http://localhost:9000/zentao/user-login-L3plbnRhby8=.html'
url02='http://localhost:9000/zentao/user-create-0.html'
r1=s.get(url01,params=paylod)
r2=s.post(url02,data=d)
print(r2.text)
2、可以直接加上auth認證,那么r2請求也可取到相應的值,而不需要登錄。(用戶名:admin,密碼:123456)
import requests
from requests.auth import HTTPBasicAuth
url02 = 'http://39.106.90.48:9000/zentao/company-browse.html'
r2 = requests.post(url02,auth=HTTPBasicAuth('admin','123456'))
print(r2.status_code)
print(r2.text)
ps:水平有限,親測有效,如果有錯誤,或者理解不到位的歡迎留言指正。