天天看點

『動善時』JMeter基礎 — 34、JMeter接口關聯【XPath提取器】

目錄

  • 1、XPath提取器介紹
  • 2、XPath提取器界面詳解
  • 3、XPath提取器的使用
    • (1)測試計劃内包含的元件
    • (2)HTTP請求界面内容
    • (3)XPath提取器界面内容
    • (4)百度接口HTTP請求界面内容
    • (5)檢視結果
  • 4、總結

1、XPath提取器介紹

有些WEB項目是前後端不分離的,接口傳回的内容不是Json格式的資料,而傳回的是一個HTML頁面。并且有些參數是隐藏在HTML頁面裡面的,需要從HTML頁面中提取出這些隐藏參數,這個時候就會用到XPath提取器元件。

XPath提取器元件常用于接口傳回值為HTML或XML格式資料的時候,進行資料的提取。

XPath提取器元件在後置處理器元件中,後置處理器主要的作用,在請求結束或者傳回響應結果時發揮作用。

2、XPath提取器界面詳解

添加XPath提取器元件操作:

選中“取樣器”右鍵 —> 添加 —> 後置處理器 —> XPath提取器

界面如下圖所示:

『動善時』JMeter基礎 — 34、JMeter接口關聯【XPath提取器】

下面是XPath提取器元件的詳細說明:

  • 名稱:XPath提取器元件的自定義名稱,見名知意最好。
  • 注釋:即添加一些備注資訊,對該XPath提取器元件的簡短說明,以便後期回顧時檢視。

(1)

Apply to

:作用範圍(傳回内容的取值範圍)

  • Main sample and sub-samples

    :作用于父節點的取樣器及對應子節點的取樣器。
  • Main sample only

    :僅作用于父節點的取樣器。
  • Sub-samples only

    :僅作用于子節點的取樣器。
  • JMeter Variable Name to use

    :作用于JMeter變量(輸入框内可輸入JMeter的變量名稱),從指定變量中提取需要的值。

(2)

XML Parsing Options

:要解析的XML參數

  • Use Tidy (tolerant parser)

    :當需要處理的頁面是HTML格式時,必須選中該選項;如果是XML或XHTML格式,則取消選中。
  • Quiet

    :表示隻顯示需要的HTML頁面。
  • Report errors

    :表示顯示響應報錯。
  • Show warnings

    :表示顯示警告。
  • Use Namespaces

    :如果啟用該選項,後續的XML解析器将使用命名空間來分辨。
  • Validate XML

    :根據頁面元素模式進行檢查解析。
  • Ignore Whitespace

    :忽略空白内容。
  • Fetch external DTDs

    :如果選中該項,外部将使用DTD規則來擷取頁面内容。

(3)第三部分内容

  • Return entire XPath fragment of text content

    :表示是否傳回文本内容的整個XPath片段。
  • Reference Name

    :定義提取值的變量名稱。
  • XPath Query

    :用于提取值的XPath表達式。
  • 比對數字(0代表随機):表示取值是第幾個比對結果,因為有可能XPath表達式會比對到多個值。0表示随機,-1表示全部,1代表第一個,2代表第二個,以此類推。
  • Default Value

    :參數的預設值。也就是取不到值時的預設值。

總結XPath提取器元件:

對所有符合條件的取樣器按順序進行取樣。

例如,如果有一個主取樣器和三個子取樣器,每個取樣器都有一個符合條件的比對結果(總共4個)。

當設定為

Sub-samples only

時,比對數字為3,則第三個子取樣器的比對結果傳回;

當比對數字為0或者負數,所有的合格的取樣器都将被處理,而當比對數字>0,一旦找到足夠的比對,比對就停止下來。

3、XPath提取器的使用

需求:

  1. 通路網易官網,擷取title值。
  2. 将title值放入百度搜尋框,進行搜尋。

(1)測試計劃内包含的元件

添加元件操作步驟:

  1. 建立測試計劃。
  2. 建立線程組:

    選中“測試計劃”右鍵 —> 添加 —> 線程(使用者) —> 線程組

  3. 線上程組下,添加取樣器“HTTP請求”元件:

    選中“線程組”右鍵 —> 添加 —> 取樣器 —> HTTP請求

  4. 在取樣器下,添加後置處理器“XPath提取器”元件:

    選中“取樣器”右鍵 —> 添加 —> 後置處理器 —> XPath提取器

  5. 線上程組下,添加監聽器“察看結果樹”元件:

    選中“線程組”右鍵 —> 添加 —> 監聽器 —> 察看結果樹

提示:需要重複添加的元件這裡不重複描述。

最終測試計劃中的元件如下:

『動善時』JMeter基礎 — 34、JMeter接口關聯【XPath提取器】

點選運作按鈕,會提示你先儲存該腳本,腳本儲存完成後會直接自動運作該腳本。

提示:提取器一定要添加在你指定的某個請求下面,作為他的子請求,否則提取不到指定的資料!

(2)HTTP請求界面内容

非常簡單的Get請求,之前說了很多次了,這裡就不做解釋了。

界面内容如下圖所示:

『動善時』JMeter基礎 — 34、JMeter接口關聯【XPath提取器】

(3)XPath提取器界面内容

我們在編輯XPath提取器元件之前,一般先請求一下需要提取傳回資料的接口。

因為我們需要先檢視一下需要提取的資料在什麼位置,如下圖所示:

『動善時』JMeter基礎 — 34、JMeter接口關聯【XPath提取器】

然後選擇

XPath Tester

視圖模式,先手動編寫XPath表達式,看看是否能夠取到需要的資料。

如下圖所示:

『動善時』JMeter基礎 — 34、JMeter接口關聯【XPath提取器】

注意兩點:

  1. 選擇

    XPath Tester

    模式進行XPath表達式的編寫驗證。
  2. 如果是在HTML頁面源碼中提取資料,

    Use Tidy (tolerant parser)

    選擇一定要勾選,否則會報錯。

之後我們就可以編寫XPath提取器元件界面了,如下:

編寫引用名稱、XPath表達式、比對資料選擇,還有

Use Tidy

選項一定要勾選,否則不能取到資料。

『動善時』JMeter基礎 — 34、JMeter接口關聯【XPath提取器】

XPath提取器元件提取出來的資料,會存儲線上程變量中,供其他後續接口使用。

關于XPath表示的寫法,可以看Selenium相關的文章,裡面有詳細的寫法。

(4)百度接口HTTP請求界面内容

填寫接口的基本請求資訊,然後把XPath提取器提取出來的資料,作為參數化變量應用到請求中。

如下圖所示:

『動善時』JMeter基礎 — 34、JMeter接口關聯【XPath提取器】
提示:如果此時直接執行該腳本,請求百度搜尋網易的接口會執行,但是沒有傳回資料的,因為百度拒絕你的通路,我們需要設定請求頭

User-Agent

屬性,來模拟是一個浏覽器通路,如

User-Agent=Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400

,這樣百度就不會拒絕通路了。

(5)檢視結果

我們可以看到再第二個請求中,拿到了第一個請求提取出來的資料“網易”。

如下圖所示:

『動善時』JMeter基礎 — 34、JMeter接口關聯【XPath提取器】

再來看看第二個請求響應的結果,可以看到有

網易_百度搜尋

title

屬性,說明在百度已經進行了網易搜尋。

如下圖所示:

『動善時』JMeter基礎 — 34、JMeter接口關聯【XPath提取器】
提示:可以添加

Debug PostProcessor

(調試後置處理器),或者

Debug Sampler

(調試取樣器),來檢視Xpath提取器中,提取出的内容是否正确。

注意:正常跑用例時删除或禁用它們。

4、總結

XPath提取器通常是從網頁源檔案中,提取資料時用的比較多。提取完參數後,相當于把參數以

key-value

的形式,存放到參數池中,以便後面的請求使用。

注意:不能超前引用。

繼續閱讀