1. 程式人生 > >python介面自動化7-引數關聯

python介面自動化7-引數關聯

前言

我們用自動化發帖之後,要想接著對這篇帖子操作,那就需要用引數關聯了,發帖之後會有一個帖子的id,獲取到這個id,繼續操作傳這個帖子id就可以了

(部落格園的登入機制已經變了,不能用賬號和密碼登入了,換個網站,或者用cookie登入吧)

一、刪除草稿箱

1.我們前面講過登入後儲存草稿箱,那可以繼續接著操作:刪除剛才儲存的草稿

2.用fiddler抓包,抓到刪除帖子的請求,從抓包結果可以看出,傳的json引數是postId

3.這個postId哪裡來的呢?可以看上個請求url地址

4.也就是說儲存草稿箱成功之後,重定向一個url地址,裡面帶有postId這個引數。那接下來我們提取出來就可以了

二、提取引數

1.我們需要的引數postId是在儲存成功後url地址,這時候從url地址提出對應的引數值就行了,先獲取儲存成功後url

2.通過正則提取需要的字串,這個引數值前面(postid=)和後面(&)字串都是固定的

3.這裡正則提出來的是list型別,取第一個值就可以是字串了(注意:每次儲存需要修改內容,不能重複)

三,傳參

1.刪除草稿箱的json引數傳上面取到的引數:{"postId": postid[0]}

2.json資料型別post裡面填json就行,會自動轉json

3.接著前面的儲存草稿箱操作,就可以刪除成功了

四、參考程式碼

(敲黑板!!!由於部落格園的登入機制變了,後面所有的登入地方全部用cookie登入)

 # coding:utf-8
import requests

# 先開啟登入首頁,獲取部分cookie
url = "https://passport.cnblogs.com/user/signin"
headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
           }  # get方法其它加個ser-Agent就可以了

s = requests.session()
r = s.get(url, headers=headers,verify=False)
print s.cookies

# 新增登入需要的兩個cookie
c = requests.cookies.RequestsCookieJar()

c.set('.CNBlogsCookie', '這裡是抓到的')  # 填上面抓包內容
c.set('.Cnblogs.AspNetCore.Cookies','這裡是抓到的')  # 填上面抓包內容
c.set('AlwaysCreateItemsAsActive',"True")
c.set('AdminCookieAlwaysExpandAdvanced',"True")
s.cookies.update(c)
print s.cookies

# -----------登入全部走cookie登入---


# 第二步:儲存草稿
url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"
body = {"__VIEWSTATE": "",
        "__VIEWSTATEGENERATOR":"FE27D343",
        "Editor$Edit$txbTitle":"這是3111",
        "Editor$Edit$EditorBody":"<p>這裡111:http://www.cnblogs.com/yoyoketang/</p>",
        "Editor$Edit$Advanced$ckbPublished":"on",
        "Editor$Edit$Advanced$chkDisplayHomePage":"on",
        "Editor$Edit$Advanced$chkComments":"on",
        "Editor$Edit$Advanced$chkMainSyndication":"on",
        "Editor$Edit$Advanced$txbEntryName":"",
        "Editor$Edit$Advanced$txbExcerpt":"",
        "Editor$Edit$Advanced$tbEnryPassword":"",
        "Editor$Edit$lkbDraft":"存為草稿",
         }

r2 = s.post(url2, data=body, verify=False)
# 獲取當前url地址
print r2.url

# 第三步:正則提取需要的引數值
import re
postid = re.findall(r"postid=(.+?)&", r2.url)
print postid  # 這裡是list
# 提取為字串
print postid[0]

# 第四步:刪除草稿箱
url3 = "https://i.cnblogs.com/post/delete"
json3 = {"postId": postid[0]}
r3 = s.post(url3, json=json3, verify=False)
print r3.json()

相關推薦

python介面自動化7-引數關聯

前言 我們用自動化發帖之後,要想接著對這篇帖子操作,那就需要用引數關聯了,發帖之後會有一個帖子的id,獲取到這個id,繼續操作傳這個帖子id就可以了 (部落格園的登入機制已經變了,不能用賬號和密碼登入了,換個網站,或者用cookie登入吧) 一、刪除草稿箱 1.我們前面講

python 介面自動化 excel引數化封裝

1、定義config  檔案   裡面定義全域性用的引數, 比如下面用到的 excel 的地址資訊。 config定義如下 # !/usr/bin/python3 # -*- coding: utf-8 -*- import os # 路徑配置;專案的路徑 BASE

python介面自動化(三十四)-封裝與呼叫--函式和引數化(詳解)

簡介   前面雖然實現了引數的關聯,但是那種只是記流水賬的完成功能,不便於維護,也沒什麼可讀性,隨著水平和技能的提升,再返回頭去看前邊寫的程式碼,簡直是慘不忍睹那樣的程式碼是初級入門的程式碼水平都達不到。接下來這篇由我帶領小夥伴們把每一 個滑鼠點選動作寫成一個函式,這樣更方便維護了,而且可讀性也高,後期其

python介面自動化(三十五)-封裝與呼叫--流程類介面關聯(詳解)

簡介   流程相關的介面,主要用 session 關聯,如果寫成函式(如上篇),s 引數每個函式都要帶,每個函式多個引數,這時候封裝成類會更方便。在這裡我們還是以部落格園為例,帶著小夥伴們實踐一下。 介面封裝大致流程 1、在介面測試中,有些介面經常會被用到比如登入的介面,這時候我們可以每個介面都封裝成一

python介面自動化(三十六)-封裝與呼叫--流程類介面關聯續集(詳解)

簡介    上一篇已經給大家都介紹過了流程類介面關聯,但是由於部落格的登入機制改變,所以沒有辦法給小夥伴們實戰演練一下,那麼這篇就按照上一篇計劃的用jenkins來給小夥伴們演示一下流程類介面的封裝和呼叫,其實很簡單,就是用上一篇和前邊這篇傳送門的程式碼稍 稍修改即可。不知道你自己練習了麼,如果

python介面自動化(四十一)- 發xml格式引數的post請求(超詳解)

簡介   最近在工作中,遇到一種奇葩的介面,它的引數資料是通過xml,進行傳遞的,不要大驚小怪的,林子大了什麼鳥都有,每個人的思路想法不一樣,開發的介面也是各式各樣的,如果想要統一的話,必須是提前團隊已經做好溝通定好規則,這樣就像在產品線上生成一 樣規格大小一致。就不會出現前邊的問題了,如果出現了怎麼辦?

python介面自動化】- 正則用例引數

​ 我們在做介面自動化的時候,處理介面依賴的相關資料時,通常會使用正則表示式來進行提取相關的資料。 ​ 正則表示式,又稱正規表示式、正規表示法、正規表示式、規則表示式、常規表示法(Regular Expression,在程式碼中常簡寫為regex、regexp或RE) 。它是一個特殊的字元序列,它能幫助

python介面自動化-requests庫】【一】requests庫安裝

1.概念   requests 是用Python語言編寫,基於 urllib,採用 Apache2 Licensed 開源協議的 HTTP 庫。它比 urllib 更加方便,可以節約我們大量的工作,完全滿足 HTTP 測試需求。 2.安裝   2.1 通過pip安裝   ->開啟命令列,wind

python - 介面自動化 - http請求

# -*- coding:utf-8 -*-'''@project: jiaxy@author: Jimmy@file: study_介面測試基礎知識一.py@ide: PyCharm Community Edition@time: 2018-11-27 09:07@blog: https://www.cnb

python介面自動化測試框架(post提交新增變數)

1、python介面測試框架包含哪幾部分 資料來源-> GET/POST 傳送請求->接收返回結果->斷言測試結果->生成測試報告(html報告)->網頁報告   2、python介面測試框架 config:存放配置檔案,比如資料庫設定、郵件配置、log配置

python - 介面自動化測試實戰 - case1 - 再次優化版

  本次優化:   1.  各級分Package   2.  封裝【ReadExcel】類   3.  封裝【ReadConfig】類   4.  封裝【GetLog】類   5.  引入ddt資料驅動測試,優化測試用例程式碼 &nbs

基於python介面自動化框架搭建_pytest+jenkins+allure

本介面測試框架使用python語言實現,基於pytest測試框架,同時整合Jenkins和Allure 核心特性 封裝requests請求,使用裝飾器模式 詳細的請求日誌輸出 環境與資料隔離,實現不同環境不同資料 測試用例支援引數化和資料驅動機制 使用allur

Python介面自動化測試之檔案上傳

 在介面測試中,經常會涉及到檔案上傳,檔案上傳一般包含的檔案是圖片,視訊以及如csv,excel,記事本等檔案,它的請求頭中Content-Type對應的value值是multipart/form-data,這裡依據實際的案例來說明檔案上傳的具體案例。這裡以網際網路產品人人網

python介面自動化學習之路(4)

較上一個版本優化的內容為: 1.迴圈讀取excel裡的case 2.將響應結果寫入一個新的excel import requests import xlrd import json import xlutils import xlwt import time exce

python - 介面自動化測試 - HttpRequest - 介面測試類封裝

# -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: http_request.py @ide: PyCharm Community Edition @time: 2018-12-20 11:38 @blog: h

python介面自動化1-傳送get請求 request

https://www.cnblogs.com/yoyoketang/p/6810643.html     準備工作: 1、下載python安裝。   https://www.python.org/downloads/release/python-351/

python介面自動化--Excel

1.操作步驟: (1)安裝python官方Excel庫-->xlrd (2)獲取Excel檔案位置並讀取 (3)讀取sheet (4)讀取指定rows和cols內容 2.示例程式碼 # -*- coding: utf-8 -*- import xlrd from

python - 介面自動化測試 - TestRecharge - 充值介面測試用例

  # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: test_recharge.py @ide: PyCharm Community Edition @time: 2018-12-27 10:

python - 介面自動化測試 - TestRegister - 註冊介面測試用例

  # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: test_register.py @ide: PyCharm Community Edition @time: 2018-12-28 15:

python - 介面自動化測試 - TestLogin - 登入介面測試用例

  # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: test_login.py @ide: PyCharm Community Edition @time: 2018-12-22 09:33