python接口自動化(十五)--參數關聯接口(詳解)

簡介

  咱們用自動化新建任務以後,要想接着對這個新建任務操做,那就須要用參數關聯了,新建任務以後會有一個任務的Jenkins-Crumb,獲取到這個Jenkins-Crumb,就能夠經過傳這個任務Jenkins-Crumb繼續操做這個新建的任務。python

大體流程步驟:登陸—>新建任務—>web界面操做刪除—>抓取刪除操做請求—>提取參數—>傳參—>代碼實現。web

1、刪除新建任務

一、咱們前面講過登陸後新建任務後,那能夠繼續接着操做:刪除剛纔新建的任務正則表達式

二、用fiddler抓包,抓到刪除新建任務的請求,從抓包結果能夠看出,傳的data參數是Jenkins-Crumbjson

3.這個Jenkins-Crumb哪裏來的呢?能夠看上個請求的body瀏覽器

四、也就是說在新建任務的時候,系統隨機生成一個Jenkins-Crumb參數的值,body裏面帶有Jenkins-Crumb這個參數。那接下來咱們提取出來就能夠了 bash

2、提取參數

一、咱們須要的參數Jenkins-Crumb是在新建任務是body裏Jenkins-Crumb的值,這時候從body裏提出對應的參數值就好了(注意:每次保存須要修改內容,不能重複)微信

3、傳參

一、刪除新建任務的data參數傳上面取到的參數:{"Jenkins-Crumb": Jenkins_Crumb}session

二、data數據類型post裏面填data就行post

三、接着前面的新建任務操做,就能夠刪除成功了ui

注意:若是想看清楚,能夠在刪除新建任務出打斷點,看到新建的任務後,再次執行下邊的代碼 看看是否是能夠刪掉新建任務

四、302重定向

五、content內容複製到記事本,修改後綴之後,瀏覽器查看有「歡迎來到Jenkins

4、參考代碼

1 # coding:utf-8
 2 import requests
 3 # 先打開登陸首頁,獲取部分session
 4 url = "http://localhost:8080/jenkins/j_acegi_security_check"
 5 headers = {
 6             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
 7            }  # get方法其它加個ser-Agent就能夠了
 8 d = {"j_username": "admin",
 9      "j_password": "111111",
10      "from": "",
11      "Submit": u"登陸",
12      "remember_me": "on"
13      }
14 
15 s = requests.session()
16 r = s.post(url, headers=headers, data=d)
17 #print (r.content.decode('utf-8'))
18 # 正則表達式提取帳號和登陸按鈕
19 import re
20 t = re.findall(r'<b>(.+?)</b>', r.content.decode('utf-8'))   # 用python3的這裏r.content須要解碼
21 print (t[0])
22 print (t[1])
23 #新建任務
24 url1 = "http://localhost:8080/jenkins/createItem"
25 body = {"name":"6666",
26         "mode": "hudson.model.FreeStyleProject",
27         "Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906",
28         "json":{"name":"6666",
29                 "mode": "hudson.model.FreeStyleProject",
30                 "Jenkins-Crumb":"51a97fc7fbf3792823230d9bdd7ec906"
31 
32         }
33 }
34 print(type (body))
35 import urllib
36 import sys
37 #獲取name的值
38 name = body['name']
39 print('name:'+name)
40 #獲取body的值
41 Jenkins_Crumb = body['Jenkins-Crumb']
42 print('body的值是:',body['Jenkins-Crumb'])
43 r2 = s.post(url1, data=body, verify=False)
44 #print (r2.content.decode('utf-8'))
45 #刪除新建任務
46 url2 = "http://localhost:8080/jenkins/job/"+name+"/doDelete"
47 body1 = {
48             "Jenkins-Crumb": Jenkins_Crumb
49 }
50 
51 r3 = s.post(url2, data=body1, verify=False)
52 print (r3.content.decode('utf-8'))
53 #刪除成功重定向到主界面(因爲抓包沒有看到response的結果,只知道重定向主界面)
54 print(r3.url)複製代碼

5、小結

一、細心地、認真的小夥伴必定會發現我代碼請求的name的值是6666,或者英文,而不是「北京-宏哥」的中文,緣由是中文出現的url中有時候會報錯。解決辦法:

1 from urllib.parse import quote
2 import urllib.request
3 name = quote(name)
4 url2 = "http://localhost:8080/jenkins/job/"+name+"/doDelete"複製代碼

二、給小夥伴們演示一下,打斷點

(1)在刪除新建任務出打上斷點,雙擊前邊便可出現一個紅色的大圓點

(2)查看jenkins主界面,沒有新建任務

(3)點擊右上方的昆蟲圖標

(4)進入debug模式,代碼運行到斷點處中止運行

(5)刷新主界面,再次查看jenkins主界面,有新建任務-北京-宏哥

(6)點擊右邊的綠色圖標一次性執行完後邊的代碼,或者是上邊拐彎藍色圖標,一步一步執行完後邊的代碼

(7)刷新主界面,再次查看jenkins主界面,你會看到:新建任務-北京-宏哥 神奇的消失了,他就這樣被你神不知鬼不覺的幹掉了

爲了方便你們在移動端也能看到我分享的博文,現已註冊我的微信公衆號,掃描左下方二維碼便可,歡迎你們關注,有時間會及時分享相關技術博文。

爲了方便你們互動討論相關技術問題,現已組建專門的微信羣,因爲微信羣滿100,請您掃描右下方宏哥我的微信二維碼拉你進羣
(請務必備註:進羣)
,歡迎你們加入這個你們庭,咱們一塊兒暢遊知識的海洋。

感謝您花時間閱讀此篇文章,若是您以爲這篇文章你學到了東西也是爲了犒勞下博主的碼字不易不妨打賞一下吧,讓博主能喝上一杯咖啡,在此謝過了!
若是您以爲閱讀本文對您有幫助,請點一下左下角 「推薦」按鈕,您的
「推薦」
將是我最大的寫做動力!另外您也能夠選擇 關注我,能夠很方便找到我!
本文版權歸做者和博客園共有,來源網址: www.cnblogs.com/du-hong 歡迎各位轉載,可是未經做者本人贊成,轉載文章以後必須在文章頁面明顯位置給出做者和原文鏈接,不然保留追究法律責任的權利!
我的微信公衆號 我的微信
相關文章
相關標籤/搜索